Mike, On 9/12/17 00:05, Mike Snitzer wrote: > On Mon, Jul 24 2017 at 5:16am -0400, > Damien Le Moal <damien.lemoal@xxxxxxx> wrote: > >> >> >> On 7/24/17 17:03, Christoph Hellwig wrote: >>> On Mon, Jul 24, 2017 at 04:44:22PM +0900, Damien Le Moal wrote: >>>> Avoid metadata flush to be blocked by the writeback throttling code in >>>> wbt_wait(). Otherwise, we can end up with a deadlock under heavy write >>>> load with all chunk works active. In such situation, a deadlock can >>>> happen if the flush work is blocked by the throttling code while holding >>>> the metadata lock: as the chunk works will wait for the metadata lock >>>> too, no progress can be made. >>>> >>>> Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxx> >>>> --- >>>> drivers/md/dm-zoned-metadata.c | 3 ++- >>>> 1 file changed, 2 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/drivers/md/dm-zoned-metadata.c b/drivers/md/dm-zoned-metadata.c >>>> index 884ff7c170a0..f694fb98b002 100644 >>>> --- a/drivers/md/dm-zoned-metadata.c >>>> +++ b/drivers/md/dm-zoned-metadata.c >>>> @@ -567,7 +567,8 @@ static void dmz_write_mblock(struct dmz_metadata *zmd, struct dmz_mblock *mblk, >>>> bio->bi_bdev = zmd->dev->bdev; >>>> bio->bi_private = mblk; >>>> bio->bi_end_io = dmz_mblock_bio_end_io; >>>> - bio_set_op_attrs(bio, REQ_OP_WRITE, REQ_META | REQ_PRIO); >>>> + bio_set_op_attrs(bio, REQ_OP_WRITE, >>>> + REQ_META | REQ_PRIO | REQ_SYNC | REQ_IDLE); >>> >>> Please just assign bi_opf directly instea dof using bio_set_op_attrs >>> in new code. >> >> OK. Will do. >> >>> Also what do you need REQ_IDLE for? >> >> It is not really needed here, but the wbt_should_throttle() code test is: >> >> if ((bio->bi_opf & (REQ_SYNC | REQ_IDLE)) == (REQ_SYNC | REQ_IDLE)) >> return false; >> >> So if REQ_IDLE is not set, wbt will trigger. >> >> Having a req flag that says "no wb throttling please" would be a lot >> cleaner... > > Did you have a new version of this patch? > > Thanks, > Mike My apologies, I forgot about this one. Sending right away. Best regards. -- Damien Le Moal, Western Digital -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel