> On Aug 9, 2023, at 11:42 PM, Chengming Zhou <zhouchengming@xxxxxxxxxxxxx> wrote: > > On 2023/8/10 05:49, Christoph Hellwig wrote: >> Oh well. I don't feel like we're going to find the root cause >> given that its late in the merge window and I'm running out of >> time I have to work due to the annual summer vacation. Unless >> someone like Chengming who knows the flush code pretty well >> feels like working with chuck on a few more iterations we'll > > Hi, > > No problem, I can work with Chuck to find the root cause if Chuck > has time too, since I still can't reproduce it by myself. Yes, I have some time to help. > Maybe we should first find what's the status of the hang request? > I can write a Drgn script to find if any request hang in the queue. > > Christoph, it would be very helpful if you share some thoughts > and directions. > > >> have to revert it. Which is going to be a very painful merge >> with Chengming's work in the for-6.6 branch. >> > > Maybe we can revert it manually if we still fail since that commit > just let postflushes go to the normal I/O path, instead of going to > the flush state machine. > > So I think it should be fine if we just delete that case? That's basically the fix I have been testing on v6.5-rc5 and earlier. > Chuck, could you please help to check this change on block/for-next? I'll set up a block/for-next kernel and try this out. > Thanks! > > diff --git a/block/blk-flush.c b/block/blk-flush.c > index e73dc22d05c1..7ea3c00f40ce 100644 > --- a/block/blk-flush.c > +++ b/block/blk-flush.c > @@ -442,17 +442,6 @@ bool blk_insert_flush(struct request *rq) > * Queue for normal execution. > */ > return false; > - case REQ_FSEQ_DATA | REQ_FSEQ_POSTFLUSH: > - /* > - * Initialize the flush fields and completion handler to trigger > - * the post flush, and then just pass the command on. > - */ > - blk_rq_init_flush(rq); > - rq->flush.seq |= REQ_FSEQ_PREFLUSH; > - spin_lock_irq(&fq->mq_flush_lock); > - fq->flush_data_in_flight++; > - spin_unlock_irq(&fq->mq_flush_lock); > - return false; > default: > /* > * Mark the request as part of a flush sequence and submit it -- Chuck Lever