Hi, This is a *compile only RFC* which adds a generic helper to initialize the various fields of the bio that is repeated all the places in file-systems, block layer, and drivers. The new helper allows callers to initialize various members such as bdev, sector, private, end io callback, io priority, and write hints. The objective of this RFC is to only start a discussion, this it not completely tested at all.                                                                                                             Following diff shows code level benefits of this helper :-  38 files changed, 124 insertions(+), 236 deletions(-) -ck Chaitanya Kulkarni (37): block: introduce bio_init_fields() helper fs: use bio_init_fields in block_dev btrfs: use bio_init_fields in disk-io btrfs: use bio_init_fields in volumes ext4: use bio_init_fields in page_io gfs2: use bio_init_fields in lops gfs2: use bio_init_fields in meta_io gfs2: use bio_init_fields in ops_fstype iomap: use bio_init_fields in buffered-io iomap: use bio_init_fields in direct-io jfs: use bio_init_fields in logmgr zonefs: use bio_init_fields in append drdb: use bio_init_fields in actlog drdb: use bio_init_fields in bitmap drdb: use bio_init_fields in receiver floppy: use bio_init_fields pktcdvd: use bio_init_fields bcache: use bio_init_fields in journal bcache: use bio_init_fields in super bcache: use bio_init_fields in writeback dm-bufio: use bio_init_fields dm-crypt: use bio_init_fields dm-zoned: use bio_init_fields metadata dm-zoned: use bio_init_fields target dm-zoned: use bio_init_fields dm log writes: use bio_init_fields nvmet: use bio_init_fields in bdev-ns target: use bio_init_fields in iblock btrfs: use bio_init_fields in scrub fs: use bio_init_fields in buffer eros: use bio_init_fields in data eros: use bio_init_fields in zdata jfs: use bio_init_fields in metadata nfs: use bio_init_fields in blocklayout ocfs: use bio_init_fields in heartbeat xfs: use bio_init_fields in xfs_buf xfs: use bio_init_fields in xfs_log block/blk-lib.c | 13 +++++-------- drivers/block/drbd/drbd_actlog.c | 5 +---- drivers/block/drbd/drbd_bitmap.c | 5 +---- drivers/block/drbd/drbd_receiver.c | 11 +++-------- drivers/block/floppy.c | 5 +---- drivers/block/pktcdvd.c | 12 ++++-------- drivers/md/bcache/journal.c | 21 ++++++++------------- drivers/md/bcache/super.c | 19 +++++-------------- drivers/md/bcache/writeback.c | 14 ++++++-------- drivers/md/dm-bufio.c | 5 +---- drivers/md/dm-crypt.c | 4 +--- drivers/md/dm-log-writes.c | 21 ++++++--------------- drivers/md/dm-zoned-metadata.c | 15 +++++---------- drivers/md/dm-zoned-target.c | 9 +++------ drivers/md/md.c | 6 ++---- drivers/nvme/target/io-cmd-bdev.c | 4 +--- drivers/target/target_core_iblock.c | 11 +++-------- fs/block_dev.c | 17 +++++------------ fs/btrfs/disk-io.c | 11 ++++------- fs/btrfs/scrub.c | 6 ++---- fs/btrfs/volumes.c | 4 +--- fs/buffer.c | 7 ++----- fs/erofs/data.c | 6 ++---- fs/erofs/zdata.c | 9 +++------ fs/ext4/page-io.c | 6 ++---- fs/gfs2/lops.c | 6 ++---- fs/gfs2/meta_io.c | 5 ++--- fs/gfs2/ops_fstype.c | 7 ++----- fs/iomap/buffered-io.c | 5 ++--- fs/iomap/direct-io.c | 15 +++++---------- fs/jfs/jfs_logmgr.c | 16 ++++------------ fs/jfs/jfs_metapage.c | 16 +++++++--------- fs/nfs/blocklayout/blocklayout.c | 8 ++------ fs/ocfs2/cluster/heartbeat.c | 4 +--- fs/xfs/xfs_buf.c | 6 ++---- fs/xfs/xfs_log.c | 6 ++---- fs/zonefs/super.c | 7 +++---- include/linux/bio.h | 13 +++++++++++++ 38 files changed, 124 insertions(+), 236 deletions(-) -- 2.22.1