public inbox for linux-block@vger.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <bart.vanassche@wdc.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
	Bart Van Assche <bart.vanassche@wdc.com>
Subject: [PATCH v5 0/6] Fix races between blkcg code and request queue initialization and cleanup
Date: Wed, 28 Feb 2018 10:15:27 -0800	[thread overview]
Message-ID: <20180228181533.29402-1-bart.vanassche@wdc.com> (raw)

Hello Jens,

Recently Joseph Qi identified races between the block cgroup code and request
queue initialization and cleanup. This patch series address these races.

This patch series is structured as follows:
- Patches 3..6 fix the aforementioned races.
- Patches 1..3 ensure that all maintained block drivers delete the gendisk
  before cleaning up the request queue because patches 3..6 are only safe
  if block driver shutdown uses this order. The gdrom driver (Sega Dreamcast
  GD-ROM driver) has not been modified because from what I saw in the changelog
  of this driver it seems to me like that driver is no longer in use. According
  to what I found on the web production of Sega Dreamcast was stopped in 2001
  (https://www.theguardian.com/business/2001/feb/01/4).

Please consider these patches for kernel v4.17.

Thanks,

Bart.

Changes between v4 and v5:
- Made the title of patch 4/6 more clear.
- Made the description of this patch series more detailed.

Changes between v3 and v4:
- Added three patches that fix the calling order of del_gendisk() and
  blk_cleanup_queue() in multiple block drivers.

Changes between v2 and v3:
- Added a third patch that fixes a race between the blkcg code and queue
  cleanup.

Changes between v1 and v2:
- Split a single patch into two patches.
- Dropped blk_alloc_queue_node2() and modified all block drivers that call
  blk_alloc_queue_node().

Bart Van Assche (6):
  block/loop: Delete gendisk before cleaning up the request queue
  md: Delete gendisk before cleaning up the request queue
  zram: Delete gendisk before cleaning up the request queue
  block: Add a third argument to blk_alloc_queue_node()
  block: Fix a race between the cgroup code and request queue
    initialization
  block: Fix a race between request queue removal and the block cgroup
    controller
    
Bart Van Assche (6):
  block/loop: Delete gendisk before cleaning up the request queue
  md: Delete gendisk before cleaning up the request queue
  zram: Delete gendisk before cleaning up the request queue
  block: Add 'lock' as third argument to blk_alloc_queue_node()
  block: Fix a race between the cgroup code and request queue
    initialization
  block: Fix a race between request queue removal and the block cgroup
    controller

 block/blk-core.c               | 60 +++++++++++++++++++++++++++++++++++-------
 block/blk-mq.c                 |  2 +-
 block/blk-sysfs.c              |  7 -----
 drivers/block/drbd/drbd_main.c |  3 +--
 drivers/block/loop.c           |  2 +-
 drivers/block/null_blk.c       |  3 ++-
 drivers/block/umem.c           |  7 +++--
 drivers/block/zram/zram_drv.c  |  2 +-
 drivers/ide/ide-probe.c        |  2 +-
 drivers/lightnvm/core.c        |  2 +-
 drivers/md/dm.c                |  2 +-
 drivers/md/md.c                |  6 ++---
 drivers/nvdimm/pmem.c          |  2 +-
 drivers/nvme/host/multipath.c  |  2 +-
 drivers/scsi/scsi_lib.c        |  2 +-
 include/linux/blkdev.h         |  3 ++-
 16 files changed, 70 insertions(+), 37 deletions(-)

-- 
2.16.2

             reply	other threads:[~2018-02-28 18:15 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-28 18:15 Bart Van Assche [this message]
2018-02-28 18:15 ` [PATCH v5 1/6] block/loop: Delete gendisk before cleaning up the request queue Bart Van Assche
2018-02-28 18:15 ` [PATCH v5 2/6] md: " Bart Van Assche
2018-02-28 18:15 ` [PATCH v5 3/6] zram: " Bart Van Assche
2018-02-28 18:15 ` [PATCH v5 4/6] block: Add 'lock' as third argument to blk_alloc_queue_node() Bart Van Assche
2018-02-28 18:15 ` [PATCH v5 5/6] block: Fix a race between the cgroup code and request queue initialization Bart Van Assche
2018-02-28 18:15 ` [PATCH v5 6/6] block: Fix a race between request queue removal and the block cgroup controller Bart Van Assche
2018-02-28 18:19 ` [PATCH v5 0/6] Fix races between blkcg code and request queue initialization and cleanup Jens Axboe
2018-02-28 19:01   ` Bart Van Assche
2018-02-28 19:08     ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180228181533.29402-1-bart.vanassche@wdc.com \
    --to=bart.vanassche@wdc.com \
    --cc=axboe@kernel.dk \
    --cc=hch@lst.de \
    --cc=linux-block@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox