2022-04-16 02:34:34

by Christoph Hellwig

[permalink] [raw]
Subject: use block_device based APIs in block layer consumers v3

Hi Jens,

this series cleanups up the block layer API so that APIs consumed
by file systems are (almost) only struct block_devic based, so that
file systems don't have to poke into block layer internals like the
request_queue.

I also found a bunch of existing bugs related to partition offsets
and discard so these are fixed while going along.

Changes since v2:
- fix an inverted check in btrfs
- set max_discard_sectors to 0 in all places where the flag was
previously cleared
- fix a few sligtly incorrect collected Acks

Changes since v1:
- fix a bisection hazard
- minor spelling fixes
- reorder hunks between two patches to make the changes more obvious
- reorder a patch to be earlier in the series to ease backporting


Diffstat:
arch/um/drivers/ubd_kern.c | 2
block/blk-core.c | 4 -
block/blk-lib.c | 124 ++++++++++++++++++++---------------
block/blk-mq-debugfs.c | 2
block/blk-settings.c | 74 ++++++++++++++++++++
block/blk.h | 14 ---
block/fops.c | 2
block/genhd.c | 4 -
block/ioctl.c | 48 ++++++++++---
block/partitions/core.c | 12 ---
drivers/block/drbd/drbd_main.c | 51 ++++++--------
drivers/block/drbd/drbd_nl.c | 94 +++++++++++---------------
drivers/block/drbd/drbd_receiver.c | 13 +--
drivers/block/loop.c | 15 +---
drivers/block/nbd.c | 5 -
drivers/block/null_blk/main.c | 1
drivers/block/rbd.c | 1
drivers/block/rnbd/rnbd-clt.c | 6 -
drivers/block/rnbd/rnbd-srv-dev.h | 8 --
drivers/block/rnbd/rnbd-srv.c | 5 -
drivers/block/virtio_blk.c | 2
drivers/block/xen-blkback/blkback.c | 15 ++--
drivers/block/xen-blkback/xenbus.c | 9 --
drivers/block/xen-blkfront.c | 8 +-
drivers/block/zram/zram_drv.c | 1
drivers/md/bcache/alloc.c | 2
drivers/md/bcache/request.c | 4 -
drivers/md/bcache/super.c | 3
drivers/md/bcache/sysfs.c | 2
drivers/md/dm-cache-target.c | 9 --
drivers/md/dm-clone-target.c | 9 --
drivers/md/dm-io.c | 2
drivers/md/dm-log-writes.c | 3
drivers/md/dm-raid.c | 9 --
drivers/md/dm-table.c | 25 +------
drivers/md/dm-thin.c | 15 ----
drivers/md/dm.c | 3
drivers/md/md-linear.c | 11 ---
drivers/md/md.c | 5 -
drivers/md/raid0.c | 7 -
drivers/md/raid1.c | 18 -----
drivers/md/raid10.c | 20 -----
drivers/md/raid5-cache.c | 8 +-
drivers/md/raid5.c | 14 +--
drivers/mmc/core/queue.c | 3
drivers/mtd/mtd_blkdevs.c | 1
drivers/nvme/host/core.c | 4 -
drivers/nvme/target/io-cmd-bdev.c | 2
drivers/nvme/target/zns.c | 3
drivers/s390/block/dasd_fba.c | 1
drivers/scsi/sd.c | 2
drivers/target/target_core_device.c | 20 ++---
drivers/target/target_core_file.c | 10 +-
drivers/target/target_core_iblock.c | 17 +---
fs/btrfs/disk-io.c | 3
fs/btrfs/extent-tree.c | 8 +-
fs/btrfs/ioctl.c | 12 +--
fs/btrfs/volumes.c | 4 -
fs/btrfs/zoned.c | 3
fs/direct-io.c | 32 +--------
fs/exfat/file.c | 5 -
fs/exfat/super.c | 10 --
fs/ext4/ioctl.c | 10 --
fs/ext4/mballoc.c | 10 +-
fs/ext4/super.c | 10 --
fs/f2fs/f2fs.h | 3
fs/f2fs/file.c | 19 ++---
fs/f2fs/segment.c | 8 --
fs/fat/file.c | 5 -
fs/fat/inode.c | 10 --
fs/gfs2/rgrp.c | 7 -
fs/iomap/direct-io.c | 3
fs/jbd2/journal.c | 9 --
fs/jfs/ioctl.c | 5 -
fs/jfs/super.c | 8 --
fs/nilfs2/ioctl.c | 6 -
fs/nilfs2/sufile.c | 4 -
fs/nilfs2/the_nilfs.c | 4 -
fs/ntfs3/file.c | 6 -
fs/ntfs3/super.c | 10 +-
fs/ocfs2/ioctl.c | 5 -
fs/super.c | 2
fs/xfs/xfs_discard.c | 8 +-
fs/xfs/xfs_log_cil.c | 2
fs/xfs/xfs_super.c | 12 +--
fs/zonefs/super.c | 3
include/linux/blkdev.h | 112 +++++++++++--------------------
include/target/target_core_backend.h | 4 -
mm/swapfile.c | 31 ++------
89 files changed, 494 insertions(+), 651 deletions(-)


2022-04-16 02:39:56

by Christoph Hellwig

[permalink] [raw]
Subject: [PATCH 20/27] block: use bdev_discard_alignment in part_discard_alignment_show

Use the bdev based alignment helper instead of open coding it.

Signed-off-by: Christoph Hellwig <[email protected]>
Reviewed-by: Martin K. Petersen <[email protected]>
---
block/partitions/core.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/block/partitions/core.c b/block/partitions/core.c
index 240b3fff521e4..70dec1c78521d 100644
--- a/block/partitions/core.c
+++ b/block/partitions/core.c
@@ -206,11 +206,7 @@ static ssize_t part_alignment_offset_show(struct device *dev,
static ssize_t part_discard_alignment_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
- struct block_device *bdev = dev_to_bdev(dev);
-
- return sprintf(buf, "%u\n",
- queue_limit_discard_alignment(&bdev_get_queue(bdev)->limits,
- bdev->bd_start_sect));
+ return sprintf(buf, "%u\n", bdev_discard_alignment(dev_to_bdev(dev)));
}

static DEVICE_ATTR(partition, 0444, part_partition_show, NULL);
--
2.30.2

2022-04-18 13:28:59

by Jens Axboe

[permalink] [raw]
Subject: Re: use block_device based APIs in block layer consumers v3

On Fri, 15 Apr 2022 06:52:31 +0200, Christoph Hellwig wrote:
> this series cleanups up the block layer API so that APIs consumed
> by file systems are (almost) only struct block_devic based, so that
> file systems don't have to poke into block layer internals like the
> request_queue.
>
> I also found a bunch of existing bugs related to partition offsets
> and discard so these are fixed while going along.
>
> [...]

Applied, thanks!

[01/27] target: remove an incorrect unmap zeroes data deduction
commit: 179d8609d8424529e95021df939ed7b0b82b37f1
[02/27] target: pass a block_device to target_configure_unmap_from_queue
commit: 817e8b51eb3d927ce6d56ecf9f48bc3c5b26168b
[03/27] target: fix discard alignment on partitions
commit: 968786b9ef56e75e0109158a4936ffffea962c1e
[04/27] drbd: remove assign_p_sizes_qlim
commit: 40349d0e16cedd0de561f59752c3249780fb749b
[05/27] drbd: use bdev based limit helpers in drbd_send_sizes
commit: 7a38acce229685968b770d1d9e64e01396b93643
[06/27] drbd: use bdev_alignment_offset instead of queue_alignment_offset
commit: c6f23b1a05441a26f765e59dd95e8ba7354f9388
[07/27] drbd: cleanup decide_on_discard_support
commit: 998e9cbcd615e5e6a7baa69e673ee845f812744e
[08/27] btrfs: use bdev_max_active_zones instead of open coding it
commit: c1e7b24416400ef13ff92a1c60c336c9a2834d7b
[09/27] ntfs3: use bdev_logical_block_size instead of open coding it
commit: f09dac9afb8e3ce4b6485dbc091a9b9c742db023
[10/27] mm: use bdev_is_zoned in claim_swapfile
commit: 9964e674559b02619fee2012a56839624143d02e
[11/27] block: add a bdev_nonrot helper
commit: 10f0d2a517796b8f6dc04fb0cc3e49003ae6b0bc
[12/27] block: add a bdev_write_cache helper
commit: 08e688fdb8f7e862092ae64cee20bc8b463d1046
[13/27] block: add a bdev_fua helper
commit: a557e82e5a01826f902bd94fc925c03f253cb712
[14/27] block: add a bdev_stable_writes helper
commit: 36d254893aa6a6e204075c3cce94bb572ac32c04
[15/27] block: add a bdev_max_zone_append_sectors helper
commit: 2aba0d19f4d8c8929b4b3b94a9cfde2aa20e6ee2
[16/27] block: use bdev_alignment_offset in part_alignment_offset_show
commit: 64dcc7c2717395b7c83ffb10f040d3be795d03c1
[17/27] block: use bdev_alignment_offset in disk_alignment_offset_show
commit: 640f2a23911b8388989547f89d055afbb910b88e
[18/27] block: move bdev_alignment_offset and queue_limit_alignment_offset out of line
commit: 89098b075cb74a80083bc4ed6b71d0ee18b6898f
[19/27] block: remove queue_discard_alignment
commit: 4e1462ffe8998749884d61f91be251a7a8719677
[20/27] block: use bdev_discard_alignment in part_discard_alignment_show
commit: f0f975a4dde890bfe25ce17bf07a6495453988a4
[21/27] block: move {bdev,queue_limit}_discard_alignment out of line
commit: 5c4b4a5c6f11c869a57c6bd977143430bc9dc43d
[22/27] block: refactor discard bio size limiting
commit: e3cc28ea28b5f8794db2aed24f8a0282ad2e85a2
[23/27] block: add a bdev_max_discard_sectors helper
commit: cf0fbf894bb543f472f682c486be48298eccf199
[24/27] block: remove QUEUE_FLAG_DISCARD
commit: 70200574cc229f6ba038259e8142af2aa09e6976
[25/27] block: add a bdev_discard_granularity helper
commit: 7b47ef52d0a2025fd1408a8a0990933b8e1e510f
[26/27] block: decouple REQ_OP_SECURE_ERASE from REQ_OP_DISCARD
commit: 44abff2c0b970ae3d310b97617525dc01f248d7c
[27/27] direct-io: remove random prefetches
commit: c22198e78d523c8fa079bbb70b2523bb6aa51849

Best regards,
--
Jens Axboe