Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7cfdf59 authored by Mikulas Patocka's avatar Mikulas Patocka Committed by Alasdair G Kergon
Browse files

dm flakey: dont use map_context



Replace map_info with a per-bio structure "struct per_bio_data" in dm-flakey.

Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent 89c7cd89
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -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)
{
@@ -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;

@@ -270,6 +275,8 @@ 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;
@@ -277,7 +284,7 @@ static int flakey_map(struct dm_target *ti, struct bio *bio,
		/*
		 * Flag this bio as submitted while down.
		 */
		map_context->ll = 1;
		pb->bio_submitted = true;

		/*
		 * Map reads as normal.
@@ -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);
@@ -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,