| From: |
| Christoph Hellwig <hch-AT-lst.de> |
| To: |
| Jens Axboe <axboe-AT-kernel.dk> |
| Subject: |
| introduce bdev holder ops and a file system shutdown method v2 |
| Date: |
| Thu, 18 May 2023 06:23:09 +0200 |
| Message-ID: |
| <20230518042323.663189-1-hch@lst.de> |
| Cc: |
| Al Viro <viro-AT-zeniv.linux.org.uk>, Christian Brauner <brauner-AT-kernel.org>, "Darrick J. Wong" <djwong-AT-kernel.org>, Jan Kara <jack-AT-suse.cz>, linux-block-AT-vger.kernel.org, linux-fsdevel-AT-vger.kernel.org, linux-xfs-AT-vger.kernel.org |
| Archive-link: |
| Article |
Hi all,
this series fixes the long standing problem that we never had a good way
to communicate block device events to the user of the block device.
It fixes this by introducing a new set of holder ops registered at
blkdev_get_by_* time for the exclusive holder, and then wire that up
to a shutdown super operation to report the block device remove to the
file systems.
Changes since v1:
- add a patch to refactor bd_may_claim
- add a sanity check for mismatching holder ops in bd_may_claim
- move partition removal later in del_gendisk so that partitions
are still around for the shutdown notification
- add SHUTDOWN_DEVICE_REMOVED to XFS_SHUTDOWN_STRINGS
Diffstat:
block/bdev.c | 159 ++++++++++++++++++++----------------
block/blk.h | 2
block/fops.c | 2
block/genhd.c | 78 +++++++++++++----
block/ioctl.c | 3
block/partitions/core.c | 31 +++----
drivers/block/drbd/drbd_nl.c | 3
drivers/block/loop.c | 2
drivers/block/pktcdvd.c | 5 -
drivers/block/rnbd/rnbd-srv.c | 2
drivers/block/xen-blkback/xenbus.c | 2
drivers/block/zram/zram_drv.c | 2
drivers/md/bcache/super.c | 2
drivers/md/dm.c | 2
drivers/md/md.c | 2
drivers/mtd/devices/block2mtd.c | 4
drivers/nvme/target/io-cmd-bdev.c | 2
drivers/s390/block/dasd_genhd.c | 2
drivers/target/target_core_iblock.c | 2
drivers/target/target_core_pscsi.c | 3
fs/btrfs/dev-replace.c | 2
fs/btrfs/volumes.c | 6 -
fs/erofs/super.c | 2
fs/ext4/super.c | 3
fs/f2fs/super.c | 4
fs/jfs/jfs_logmgr.c | 2
fs/nfs/blocklayout/dev.c | 5 -
fs/nilfs2/super.c | 2
fs/ocfs2/cluster/heartbeat.c | 2
fs/reiserfs/journal.c | 5 -
fs/super.c | 21 ++++
fs/xfs/xfs_fsops.c | 3
fs/xfs/xfs_mount.h | 4
fs/xfs/xfs_super.c | 21 ++++
include/linux/blk_types.h | 2
include/linux/blkdev.h | 12 ++
include/linux/fs.h | 1
kernel/power/swap.c | 4
mm/swapfile.c | 3
39 files changed, 266 insertions(+), 148 deletions(-)