On Thu, Apr 12, 2018 at 11:54:28AM +0200, Mariusz Dabrowski wrote: > Store write hint from original bio in stripe head so it can be assigned > to bio sent to each RAID device. > > Signed-off-by: Mariusz Dabrowski <mariusz.dabrowski@xxxxxxxxx> > Reviewed-by: Artur Paszkiewicz <artur.paszkiewicz@xxxxxxxxx> > Reviewed-by: Pawel Baldysiak <pawel.baldysiak@xxxxxxxxx> > --- > drivers/md/raid5.c | 6 ++++++ > drivers/md/raid5.h | 1 + > 2 files changed, 7 insertions(+) > > diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c > index be117d0a65a8..8705c1c5864f 100644 > --- a/drivers/md/raid5.c > +++ b/drivers/md/raid5.c > @@ -1139,6 +1139,9 @@ static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s) > bi->bi_io_vec[0].bv_len = STRIPE_SIZE; > bi->bi_io_vec[0].bv_offset = 0; > bi->bi_iter.bi_size = STRIPE_SIZE; > + bi->bi_write_hint = sh->dev[i].write_hint; > + if (!rrdev) > + sh->dev[i].write_hint = RWF_WRITE_LIFE_NOT_SET; > /* > * If this is discard request, set bi_vcnt 0. We don't > * want to confuse SCSI because SCSI will replace payload > @@ -1190,6 +1193,8 @@ static void ops_run_io(struct stripe_head *sh, struct stripe_head_state *s) > rbi->bi_io_vec[0].bv_len = STRIPE_SIZE; > rbi->bi_io_vec[0].bv_offset = 0; > rbi->bi_iter.bi_size = STRIPE_SIZE; > + rbi->bi_write_hint = sh->dev[i].write_hint; > + sh->dev[i].write_hint = 0; why not use RWF_WRITE_LIFE_NOT_SET here? > /* > * If this is discard request, set bi_vcnt 0. We don't > * want to confuse SCSI because SCSI will replace payload > @@ -3204,6 +3209,7 @@ static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, > (unsigned long long)sh->sector); > > spin_lock_irq(&sh->stripe_lock); > + sh->dev[dd_idx].write_hint = bi->bi_write_hint; > /* Don't allow new IO added to stripes in batch list */ > if (sh->batch_head) > goto overlap; > diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h > index 3f8da26032ac..aea2447b0ea7 100644 > --- a/drivers/md/raid5.h > +++ b/drivers/md/raid5.h > @@ -257,6 +257,7 @@ struct stripe_head { > sector_t sector; /* sector of this page */ > unsigned long flags; > u32 log_checksum; > + unsigned short write_hint; > } dev[1]; /* allocated with extra space depending of RAID geometry */ > }; > > -- > 2.16.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-raid" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html