Skip to content

Commit

Permalink
dm flakey: dont use map_context
Browse files Browse the repository at this point in the history
Replace map_info with a per-bio structure "struct per_bio_data" in dm-flakey.

Signed-off-by: Mikulas Patocka <[email protected]>
Signed-off-by: Alasdair G Kergon <[email protected]>
  • Loading branch information
Mikulas Patocka authored and kergon committed Dec 21, 2012
1 parent 89c7cd8 commit c7cfdf5
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions drivers/md/dm-flakey.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ enum feature_flag_bits {
DROP_WRITES
};

struct per_bio_data {
bool bio_submitted;
};

static int parse_features(struct dm_arg_set *as, struct flakey_c *fc,
struct dm_target *ti)
{
Expand Down Expand Up @@ -214,6 +218,7 @@ static int flakey_ctr(struct dm_target *ti, unsigned int argc, char **argv)

ti->num_flush_requests = 1;
ti->num_discard_requests = 1;
ti->per_bio_data_size = sizeof(struct per_bio_data);
ti->private = fc;
return 0;

Expand Down Expand Up @@ -270,14 +275,16 @@ static int flakey_map(struct dm_target *ti, struct bio *bio,
{
struct flakey_c *fc = ti->private;
unsigned elapsed;
struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data));
pb->bio_submitted = false;

/* Are we alive ? */
elapsed = (jiffies - fc->start_time) / HZ;
if (elapsed % (fc->up_interval + fc->down_interval) >= fc->up_interval) {
/*
* Flag this bio as submitted while down.
*/
map_context->ll = 1;
pb->bio_submitted = true;

/*
* Map reads as normal.
Expand Down Expand Up @@ -318,13 +325,13 @@ static int flakey_end_io(struct dm_target *ti, struct bio *bio,
int error, union map_info *map_context)
{
struct flakey_c *fc = ti->private;
unsigned bio_submitted_while_down = map_context->ll;
struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data));

/*
* Corrupt successful READs while in down state.
* If flags were specified, only corrupt those that match.
*/
if (fc->corrupt_bio_byte && !error && bio_submitted_while_down &&
if (fc->corrupt_bio_byte && !error && pb->bio_submitted &&
(bio_data_dir(bio) == READ) && (fc->corrupt_bio_rw == READ) &&
all_corrupt_bio_flags_match(bio, fc))
corrupt_bio_data(bio, fc);
Expand Down Expand Up @@ -406,7 +413,7 @@ static int flakey_iterate_devices(struct dm_target *ti, iterate_devices_callout_

static struct target_type flakey_target = {
.name = "flakey",
.version = {1, 2, 0},
.version = {1, 3, 0},
.module = THIS_MODULE,
.ctr = flakey_ctr,
.dtr = flakey_dtr,
Expand Down

0 comments on commit c7cfdf5

Please sign in to comment.