Hello, Draining FS I/O on del_gendisk() is added for just avoiding to refer to recently added q->disk in IO path, and it isn't actually reliable: 1) queue freezing can't drain FS I/O for bio based driver, so blk-cgroup shutdown can't be moved into del_gendisk() 2) freezing queue can't drain in-progress IO issue/dispatch activities, so elevator shutdown can't be moved into del_gendisk() 3) the added flag of GD_DEAD may not be observed reliably in __bio_queue_enter() because queue freezing might not imply rcu grace period. 4) passthrough IO accounting code can refer to q->disk after disk is released When releasing disk, all FS IOs are guaranteed to be done, so this patchset tries to shutdown elevator/blk-cgroup/rq qos there, then referring to q->disk can be avoided after disk is released. Also add flag of BLK_MQ_REQ_USER_IO for accounting passthrough IO only if the IO is from userspace, since disk is live for user passthrough IO. V2: - take new approach to make current referring to q->disk reliable Laibin Qiu (1): block/wbt: fix negative inflight counter when remove scsi device Ming Lei (12): block: declare blkcg_[init|exit]_queue in private header block: move initialization of q->blkg_list into blkcg_init_queue block: move blkcg initialization/destroy into disk allocation/release handler block: only account passthrough IO from userspace block: don't remove hctx debugfs dir from blk_mq_exit_queue block: move q_usage_counter release into blk_queue_release block: export __blk_mq_unfreeze_queue scsi: force unfreezing queue into atomic mode block: add helper of disk_release_queue for release queue data for disk block: move blk_exit_queue into disk_release block: move rq_qos_exit() into disk_release() block: don't drain file system I/O on del_gendisk block/bfq-iosched.c | 2 + block/blk-cgroup.c | 2 + block/blk-core.c | 31 ++++---------- block/blk-mq.c | 27 ++++++++++-- block/blk-sysfs.c | 25 +----------- block/blk.h | 10 ++++- block/elevator.c | 2 - block/genhd.c | 84 +++++++++++++++++++++++++++----------- drivers/nvme/host/ioctl.c | 2 +- drivers/scsi/scsi_ioctl.c | 3 +- drivers/scsi/sd.c | 2 +- include/linux/blk-cgroup.h | 4 -- include/linux/blk-mq.h | 3 ++ include/linux/genhd.h | 1 - 14 files changed, 114 insertions(+), 84 deletions(-) -- 2.31.1