introduce bdev holder ops and a file system shutdown method

Christoph Hellwig
2023-05-05T17:52:55Z

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.

Diffstat:
block/bdev.c | 106 ++++++++++++++++++++----------------
block/fops.c | 2
block/genhd.c | 57 +++++++++++++------
block/ioctl.c | 3 -
drivers/block/drbd/drbd_nl.c | 3 -
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 | 1
fs/xfs/xfs_super.c | 21 ++++++-
include/linux/blk_types.h | 2
include/linux/blkdev.h | 9 ++-
include/linux/fs.h | 1
kernel/power/swap.c | 4 -
mm/swapfile.c | 3 -
36 files changed, 196 insertions(+), 103 deletions(-)