On Mon, 2017-03-27 at 20:06 +0800, Ming Lei wrote: > diff --git a/block/blk-core.c b/block/blk-core.c > index ad388d5e309a..5e8963bc98d9 100644 > --- a/block/blk-core.c > +++ b/block/blk-core.c > @@ -669,6 +669,15 @@ int blk_queue_enter(struct request_queue *q, bool nowait) > if (nowait) > return -EBUSY; > > + /* > + * read pair of barrier in blk_mq_freeze_queue_start(), > + * we need to order reading __PERCPU_REF_DEAD flag of > + * .q_usage_counter and reading .mq_freeze_depth, > + * otherwise the following wait may never return if the > + * two reads are reordered. > + */ > + smp_rmb(); > + > ret = wait_event_interruptible(q->mq_freeze_wq, > !atomic_read(&q->mq_freeze_depth) || > blk_queue_dying(q)); Since patch 4/4 modifies the comment introduced by this patch, I would have preferred that patches 2/4 and 4/4 would have been combined into a single patch. Anyway: Reviewed-by: Bart Van Assche <bart.vanassche@xxxxxxxxxxx>