From: Bart Van Assche <bvanassche@acm.org>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
Bart Van Assche <bvanassche@acm.org>
Subject: [PATCH v2 00/63] Improve static type checking for request flags
Date: Wed, 29 Jun 2022 16:30:42 -0700 [thread overview]
Message-ID: <20220629233145.2779494-1-bvanassche@acm.org> (raw)
Hi Jens,
A source of confusion in the block layer is that can be nontrivial to determine
which type of flags a u32 function argument accepts. This patch series clears
up that confusion for request flags by introducing a new __bitwise type, namely
blk_opf_t. Additionally, the type 'int' is change into 'enum req_op' where used
to hold a request operation.
Analysis of the sparse warnings introduced by this conversion resulted in one
bug fix ("blktrace: Trace remap operations correctly").
Although the number of patches in this series is significant, the risk of this
patch series is low since most patches involve changing one integer type (int
or u32) into another integer type of the same size (enum req_op or blk_opf_t).
Please consider this patch series for kernel v5.20.
Thanks,
Bart.
Changes compared to v1:
- Combined request operation and flags into a single variable or argument.
- Changed the type of several enum req_op arguments into blk_opf_t for future
extensibility.
- Removed the __force casts from tracing code.
- Added a few additional patches that convert additional block drivers.
Bart Van Assche (63):
treewide: Rename enum req_opf into enum req_op
block: Use enum req_op where appropriate
block: Change the type of the last .rw_page() argument
block: Change the type of req_op() and bio_op() into enum req_op
block: Introduce the type blk_opf_t
block: Use the new blk_opf_t type
block/bfq: Use the new blk_opf_t type
block/mq-deadline: Use the new blk_opf_t type
block/kyber: Use the new blk_opf_t type
blktrace: Trace remapped requests correctly
blktrace: Use the new blk_opf_t type
block/brd: Use the enum req_op type
block/drbd: Use the enum req_op and blk_opf_t types
block/drbd: Combine two drbd_submit_peer_request() arguments
block/floppy: Fix a sparse warning
block/rnbd: Use blk_opf_t where appropriate
xen-blkback: Use the enum req_op and blk_opf_t types
block/zram: Use enum req_op where appropriate
nvdimm-btt: Use the enum req_op type
um: Use enum req_op where appropriate
dm/core: Reduce the size of struct dm_io_request
dm/core: Rename kcopyd_job.rw into kcopyd.op
dm/core: Combine request operation type and flags
dm/ebs: Change 'int rw' into 'enum req_op op'
dm/dm-flakey: Use the new blk_opf_t type
dm/dm-integrity: Combine request operation and flags
dm mirror log: Use the new blk_opf_t type
dm-snap: Combine request operation type and flags
dm/zone: Use the enum req_op type
dm/dm-zoned: Use the enum req_op type
md/core: Combine two sync_page_io() arguments
md/bcache: Combine two uuid_io() arguments
md/bcache: Combine two prio_io() arguments
md/raid1: Use the new blk_opf_t type
md/raid10: Use the new blk_opf_t type
md/raid5: Use the enum req_op and blk_opf_t types
nvme/host: Use the enum req_op and blk_opf_t types
nvme/target: Use the new blk_opf_t type
scsi/core: Improve static type checking
scsi/core: Change the return type of scsi_noretry_cmd() into bool
scsi/core: Use the new blk_opf_t type
scsi/device_handlers: Use the new blk_opf_t type
scsi/ufs: Rename a 'dir' argument into 'op'
scsi/target: Use the new blk_opf_t type
mm: Use the new blk_opf_t type
fs/buffer: Use the new blk_opf_t type
fs/buffer: Combine two submit_bh() and ll_rw_block() arguments
fs/direct-io: Reduce the size of struct dio
fs/mpage: Use the new blk_opf_t type
fs/btrfs: Use the enum req_op and blk_opf_t types
fs/ext4: Use the new blk_opf_t type
fs/f2fs: Use the enum req_op and blk_opf_t types
fs/gfs2: Use the enum req_op and blk_opf_t types
fs/hfsplus: Use the enum req_op and blk_opf_t types
fs/iomap: Use the new blk_opf_t type
fs/jbd2: Fix the documentation of the jbd2_write_superblock() callers
fs/nfs: Use enum req_op where appropriate
fs/nilfs2: Use the enum req_op and blk_opf_t types
fs/ntfs3: Use enum req_op where appropriate
fs/ocfs2: Use the enum req_op and blk_opf_t types
PM: Use the enum req_op and blk_opf_t types
fs/xfs: Use the enum req_op and blk_opf_t types
fs/zonefs: Use the enum req_op type for request operations
arch/um/drivers/ubd_kern.c | 4 +-
block/bfq-cgroup.c | 16 +--
block/bfq-iosched.c | 8 +-
block/bfq-iosched.h | 8 +-
block/bio.c | 10 +-
block/blk-cgroup-rwstat.h | 2 +-
block/blk-core.c | 8 +-
block/blk-flush.c | 6 +-
block/blk-merge.c | 8 +-
block/blk-mq-debugfs.c | 6 +-
block/blk-mq.c | 15 +--
block/blk-mq.h | 6 +-
block/blk-throttle.c | 7 +-
block/blk-wbt.c | 18 +--
block/blk-zoned.c | 7 +-
block/blk.h | 2 +-
block/elevator.h | 2 +-
block/fops.c | 8 +-
block/kyber-iosched.c | 6 +-
block/mq-deadline.c | 2 +-
drivers/block/brd.c | 4 +-
drivers/block/drbd/drbd_actlog.c | 9 +-
drivers/block/drbd/drbd_bitmap.c | 3 +-
drivers/block/drbd/drbd_int.h | 5 +-
drivers/block/drbd/drbd_receiver.c | 24 ++--
drivers/block/drbd/drbd_worker.c | 2 +-
drivers/block/floppy.c | 2 +-
drivers/block/null_blk/main.c | 9 +-
drivers/block/null_blk/null_blk.h | 12 +-
drivers/block/null_blk/trace.h | 2 +-
drivers/block/null_blk/zoned.c | 4 +-
drivers/block/paride/pd.c | 2 +
drivers/block/rnbd/rnbd-proto.h | 7 +-
drivers/block/xen-blkback/blkback.c | 6 +-
drivers/block/zram/zram_drv.c | 4 +-
drivers/md/bcache/super.c | 25 ++--
drivers/md/dm-bufio.c | 26 ++---
drivers/md/dm-ebs-target.c | 15 +--
drivers/md/dm-flakey.c | 8 +-
drivers/md/dm-integrity.c | 76 ++++++-------
drivers/md/dm-io.c | 38 +++----
drivers/md/dm-kcopyd.c | 26 ++---
drivers/md/dm-log.c | 8 +-
drivers/md/dm-raid.c | 2 +-
drivers/md/dm-raid1.c | 12 +-
drivers/md/dm-snap-persistent.c | 25 ++--
drivers/md/dm-writecache.c | 12 +-
drivers/md/dm-zone.c | 2 +-
drivers/md/dm-zoned-metadata.c | 5 +-
drivers/md/dm-zoned.h | 2 +-
drivers/md/dm.c | 12 +-
drivers/md/md-bitmap.c | 6 +-
drivers/md/md.c | 10 +-
drivers/md/md.h | 3 +-
drivers/md/raid1.c | 12 +-
drivers/md/raid10.c | 20 ++--
drivers/md/raid5-cache.c | 12 +-
drivers/md/raid5-ppl.c | 12 +-
drivers/md/raid5.c | 5 +-
drivers/nvdimm/btt.c | 4 +-
drivers/nvdimm/pmem.c | 2 +-
drivers/nvme/host/ioctl.c | 4 +-
drivers/nvme/host/nvme.h | 2 +-
drivers/nvme/target/io-cmd-bdev.c | 3 +-
drivers/nvme/target/zns.c | 6 +-
drivers/scsi/device_handler/scsi_dh_alua.c | 4 +-
drivers/scsi/device_handler/scsi_dh_emc.c | 2 +-
drivers/scsi/device_handler/scsi_dh_hp_sw.c | 4 +-
drivers/scsi/device_handler/scsi_dh_rdac.c | 2 +-
drivers/scsi/scsi_error.c | 16 +--
drivers/scsi/scsi_lib.c | 12 +-
drivers/scsi/scsi_priv.h | 2 +-
drivers/scsi/sd_zbc.c | 2 +-
drivers/target/target_core_iblock.c | 4 +-
drivers/ufs/core/ufshpb.c | 7 +-
fs/btrfs/check-integrity.c | 4 +-
fs/btrfs/compression.c | 6 +-
fs/btrfs/compression.h | 2 +-
fs/btrfs/extent_io.c | 18 +--
fs/btrfs/inode.c | 4 +-
fs/btrfs/raid56.c | 4 +-
fs/buffer.c | 56 ++++-----
fs/direct-io.c | 37 +++---
fs/ext4/ext4.h | 8 +-
fs/ext4/fast_commit.c | 4 +-
fs/ext4/mmp.c | 2 +-
fs/ext4/super.c | 20 ++--
fs/f2fs/data.c | 11 +-
fs/f2fs/f2fs.h | 6 +-
fs/f2fs/node.c | 2 +-
fs/f2fs/segment.c | 2 +-
fs/gfs2/bmap.c | 5 +-
fs/gfs2/dir.c | 5 +-
fs/gfs2/log.c | 4 +-
fs/gfs2/log.h | 2 +-
fs/gfs2/lops.c | 4 +-
fs/gfs2/lops.h | 2 +-
fs/gfs2/meta_io.c | 18 ++-
fs/gfs2/quota.c | 2 +-
fs/hfsplus/hfsplus_fs.h | 2 +-
fs/hfsplus/part_tbl.c | 5 +-
fs/hfsplus/super.c | 4 +-
fs/hfsplus/wrapper.c | 12 +-
fs/iomap/direct-io.c | 8 +-
fs/isofs/compress.c | 2 +-
fs/jbd2/commit.c | 8 +-
fs/jbd2/journal.c | 19 ++--
fs/jbd2/recovery.c | 4 +-
fs/mpage.c | 2 +-
fs/nfs/blocklayout/blocklayout.c | 13 +--
fs/nilfs2/btnode.c | 8 +-
fs/nilfs2/btnode.h | 4 +-
fs/nilfs2/btree.c | 6 +-
fs/nilfs2/gcinode.c | 7 +-
fs/nilfs2/mdt.c | 19 ++--
fs/ntfs/aops.c | 6 +-
fs/ntfs/compress.c | 2 +-
fs/ntfs/file.c | 2 +-
fs/ntfs/logfile.c | 2 +-
fs/ntfs/mft.c | 4 +-
fs/ntfs3/file.c | 2 +-
fs/ntfs3/fsntfs.c | 2 +-
fs/ntfs3/inode.c | 2 +-
fs/ntfs3/ntfs_fs.h | 2 +-
fs/ocfs2/aops.c | 2 +-
fs/ocfs2/buffer_head_io.c | 8 +-
fs/ocfs2/cluster/heartbeat.c | 9 +-
fs/ocfs2/super.c | 2 +-
fs/reiserfs/inode.c | 4 +-
fs/reiserfs/journal.c | 12 +-
fs/reiserfs/stree.c | 4 +-
fs/reiserfs/super.c | 2 +-
fs/udf/dir.c | 2 +-
fs/udf/directory.c | 2 +-
fs/udf/inode.c | 2 +-
fs/ufs/balloc.c | 2 +-
fs/xfs/xfs_bio_io.c | 2 +-
fs/xfs/xfs_buf.c | 4 +-
fs/xfs/xfs_linux.h | 2 +-
fs/xfs/xfs_log_recover.c | 2 +-
fs/zonefs/super.c | 5 +-
fs/zonefs/trace.h | 4 +-
include/linux/bio.h | 10 +-
include/linux/blk-mq.h | 12 +-
include/linux/blk_types.h | 119 +++++++++++---------
include/linux/blkdev.h | 12 +-
include/linux/blktrace_api.h | 3 +-
include/linux/buffer_head.h | 9 +-
include/linux/dm-io.h | 4 +-
include/linux/jbd2.h | 2 +-
include/linux/writeback.h | 4 +-
include/scsi/scsi_cmnd.h | 4 +-
include/scsi/scsi_device.h | 2 +-
include/trace/events/f2fs.h | 22 ++--
include/trace/events/jbd2.h | 12 +-
include/trace/events/nilfs2.h | 4 +-
kernel/power/swap.c | 29 +++--
kernel/trace/blktrace.c | 51 ++++-----
158 files changed, 722 insertions(+), 716 deletions(-)
next reply other threads:[~2022-06-29 23:31 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-29 23:30 Bart Van Assche [this message]
2022-06-29 23:30 ` [PATCH v2 01/63] treewide: Rename enum req_opf into enum req_op Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 02/63] block: Use enum req_op where appropriate Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 03/63] block: Change the type of the last .rw_page() argument Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 04/63] block: Change the type of req_op() and bio_op() into enum req_op Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 05/63] block: Introduce the type blk_opf_t Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 06/63] block: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 07/63] block/bfq: " Bart Van Assche
2022-06-30 8:33 ` Jan Kara
2022-06-29 23:30 ` [PATCH v2 08/63] block/mq-deadline: " Bart Van Assche
2022-06-30 23:35 ` Damien Le Moal
2022-06-29 23:30 ` [PATCH v2 09/63] block/kyber: " Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 10/63] blktrace: Trace remapped requests correctly Bart Van Assche
2022-06-30 2:05 ` NOMURA JUNICHI(野村 淳一)
2022-06-30 18:13 ` Bart Van Assche
2022-06-30 23:56 ` NOMURA JUNICHI(野村 淳一)
2022-06-29 23:30 ` [PATCH v2 11/63] blktrace: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 12/63] block/brd: Use the enum req_op type Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 13/63] block/drbd: Use the enum req_op and blk_opf_t types Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 14/63] block/drbd: Combine two drbd_submit_peer_request() arguments Bart Van Assche
2022-07-05 19:53 ` Christoph Böhmwalder
2022-06-29 23:30 ` [PATCH v2 15/63] block/floppy: Fix a sparse warning Bart Van Assche
2022-06-29 23:30 ` [PATCH v2 16/63] block/rnbd: Use blk_opf_t where appropriate Bart Van Assche
2022-07-01 4:47 ` Jinpu Wang
2022-06-29 23:30 ` [PATCH v2 17/63] xen-blkback: Use the enum req_op and blk_opf_t types Bart Van Assche
2022-06-30 7:17 ` Roger Pau Monné
2022-06-29 23:31 ` [PATCH v2 18/63] block/zram: Use enum req_op where appropriate Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 19/63] nvdimm-btt: Use the enum req_op type Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 20/63] um: Use enum req_op where appropriate Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 21/63] dm/core: Reduce the size of struct dm_io_request Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 22/63] dm/core: Rename kcopyd_job.rw into kcopyd.op Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 23/63] dm/core: Combine request operation type and flags Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 24/63] dm/ebs: Change 'int rw' into 'enum req_op op' Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 25/63] dm/dm-flakey: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 26/63] dm/dm-integrity: Combine request operation and flags Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 27/63] dm mirror log: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 28/63] dm-snap: Combine request operation type and flags Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 29/63] dm/zone: Use the enum req_op type Bart Van Assche
2022-06-30 23:36 ` Damien Le Moal
2022-06-29 23:31 ` [PATCH v2 30/63] dm/dm-zoned: " Bart Van Assche
2022-06-30 23:36 ` Damien Le Moal
2022-06-29 23:31 ` [PATCH v2 31/63] md/core: Combine two sync_page_io() arguments Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 32/63] md/bcache: Combine two uuid_io() arguments Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 33/63] md/bcache: Combine two prio_io() arguments Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 34/63] md/raid1: Use the new blk_opf_t type Bart Van Assche
2022-06-30 18:41 ` Song Liu
2022-06-29 23:31 ` [PATCH v2 35/63] md/raid10: " Bart Van Assche
2022-06-30 18:41 ` Song Liu
2022-06-29 23:31 ` [PATCH v2 36/63] md/raid5: Use the enum req_op and blk_opf_t types Bart Van Assche
2022-06-30 18:41 ` Song Liu
2022-06-29 23:31 ` [PATCH v2 37/63] nvme/host: " Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 38/63] nvme/target: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 39/63] scsi/core: Improve static type checking Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 40/63] scsi/core: Change the return type of scsi_noretry_cmd() into bool Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 41/63] scsi/core: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 42/63] scsi/device_handlers: " Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 43/63] scsi/ufs: Rename a 'dir' argument into 'op' Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 44/63] scsi/target: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 45/63] mm: " Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 46/63] fs/buffer: " Bart Van Assche
2022-06-30 8:34 ` Jan Kara
2022-06-29 23:31 ` [PATCH v2 47/63] fs/buffer: Combine two submit_bh() and ll_rw_block() arguments Bart Van Assche
2022-06-30 18:43 ` Song Liu
2022-06-29 23:31 ` [PATCH v2 48/63] fs/direct-io: Reduce the size of struct dio Bart Van Assche
2022-06-30 8:50 ` Jan Kara
2022-06-30 19:06 ` Bart Van Assche
2022-07-01 10:58 ` Jan Kara
2022-06-29 23:31 ` [PATCH v2 49/63] fs/mpage: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 50/63] fs/btrfs: Use the enum req_op and blk_opf_t types Bart Van Assche
2022-06-30 11:37 ` David Sterba
2022-06-29 23:31 ` [PATCH v2 51/63] fs/ext4: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 52/63] fs/f2fs: Use the enum req_op and blk_opf_t types Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 53/63] fs/gfs2: " Bart Van Assche
2022-07-07 6:03 ` Andreas Gruenbacher
2022-06-29 23:31 ` [PATCH v2 54/63] fs/hfsplus: " Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 55/63] fs/iomap: Use the new blk_opf_t type Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 56/63] fs/jbd2: Fix the documentation of the jbd2_write_superblock() callers Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 57/63] fs/nfs: Use enum req_op where appropriate Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 58/63] fs/nilfs2: Use the enum req_op and blk_opf_t types Bart Van Assche
2022-07-01 7:03 ` Ryusuke Konishi
2022-06-29 23:31 ` [PATCH v2 59/63] fs/ntfs3: Use enum req_op where appropriate Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 60/63] fs/ocfs2: Use the enum req_op and blk_opf_t types Bart Van Assche
2022-07-01 1:47 ` Joseph Qi
2022-07-01 13:48 ` Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 61/63] PM: " Bart Van Assche
2022-06-30 15:21 ` Rafael J. Wysocki
2022-06-29 23:31 ` [PATCH v2 62/63] fs/xfs: " Bart Van Assche
2022-06-29 23:31 ` [PATCH v2 63/63] fs/zonefs: Use the enum req_op type for request operations Bart Van Assche
2022-06-30 6:02 ` Johannes Thumshirn
2022-06-30 23:39 ` Damien Le Moal
2022-07-07 17:58 ` Bart Van Assche
2022-07-07 22:07 ` Damien Le Moal
2022-07-13 21:48 ` [PATCH v2 00/63] Improve static type checking for request flags Bart Van Assche
2022-07-13 23:46 ` Jens Axboe
2022-07-13 23:49 ` Bart Van Assche
2022-07-13 23:57 ` 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=20220629233145.2779494-1-bvanassche@acm.org \
--to=bvanassche@acm.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.