projects/linux·commit c013d0af

Merge tag 'for-5.20/block-2022-07-29' of git://git.kernel.dk/linux-block

c013d0af · Linus Torvalds <[email protected]> · 2022-08-02 13:46:35 -07:00

Pull block updates from Jens Axboe:

 - Improve the type checking of request flags (Bart)

 - Ensure queue mapping for a single queues always picks the right queue
   (Bart)

 - Sanitize the io priority handling (Jan)

 - rq-qos race fix (Jinke)

 - Reserved tags handling improvements (John)

 - Separate memory alignment from file/disk offset aligment for O_DIRECT
   (Keith)

 - Add new ublk driver, userspace block driver using io_uring for
   communication with the userspace backend (Ming)

 - Use try_cmpxchg() to cleanup the code in various spots (Uros)

 - Finally remove bdevname() (Christoph)

 - Clean up the zoned device handling (Christoph)

 - Clean up independent access range support (Christoph)

 - Clean up and improve block sysfs handling (Christoph)

 - Clean up and improve teardown of block devices.

   This turns the usual two step process into something that is simpler
   to implement and handle in block drivers (Christoph)

 - Clean up chunk size handling (Christoph)

 - Misc cleanups and fixes (Bart, Bo, Dan, GuoYong, Jason, Keith, Liu,
   Ming, Sebastian, Yang, Ying)

* tag 'for-5.20/block-2022-07-29' of git://git.kernel.dk/linux-block: (178 commits)
  ublk_drv: fix double shift bug
  ublk_drv: make sure that correct flags(features) returned to userspace
  ublk_drv: fix error handling of ublk_add_dev
  ublk_drv: fix lockdep warning
  block: remove __blk_get_queue
  block: call blk_mq_exit_queue from disk_release for never added disks
  blk-mq: fix error handling in __blk_mq_alloc_disk
  ublk: defer disk allocation
  ublk: rewrite ublk_ctrl_get_queue_affinity to not rely on hctx->cpumask
  ublk: fold __ublk_create_dev into ublk_ctrl_add_dev
  ublk: cleanup ublk_ctrl_uring_cmd
  ublk: simplify ublk_ch_open and ublk_ch_release
  ublk: remove the empty open and release block device operations
  ublk: remove UBLK_IO_F_PREFLUSH
  ublk: add a MAINTAINERS entry
  block: don't allow the same type rq_qos add more than once
  mmc: fix disk/queue leak in case of adding disk failure
  ublk_drv: fix an IS_ERR() vs NULL check
  ublk: remove UBLK_IO_F_INTEGRITY
  ublk_drv: remove unneeded semicolon
  ...
Commit
c013d0af81f60cc7dbe357c4e2a925fb6738dbfe
Parents
42df1cbf · 8d9fdb60

Merge commit. Changes below are compared with the first parent: 42df1cbf.

Changes

261 files changed · +3635 −2158

FileStatusAddDelContent
Documentation/ABI/stable/sysfs-blockmodified+9−0View file
Documentation/scsi/scsi_eh.rstmodified+1−2View file
Documentation/scsi/scsi_mid_low_api.rstmodified+1−1View file
MAINTAINERSmodified+7−0View file
arch/m68k/emu/nfblock.cmodified+2−2View file
arch/um/drivers/ubd_kern.cmodified+4−4View file
arch/xtensa/platforms/iss/simdisk.cmodified+2−2View file
block/Kconfigmodified+0−1View file
block/bdev.cmodified+4−6View file
block/bfq-cgroup.cmodified+17−17View file
block/bfq-iosched.cmodified+8−8View file
block/bfq-iosched.hmodified+4−4View file
block/bfq-wf2q.cmodified+2−3View file
block/bio.cmodified+57−69View file
block/blk-cgroup-rwstat.hmodified+4−4View file
block/blk-cgroup.cmodified+40−36View file
block/blk-cgroup.hmodified+4−8View file
block/blk-core.cmodified+17−63View file
block/blk-flush.cmodified+3−3View file
block/blk-ia-ranges.cmodified+20−45View file
block/blk-ioc.cmodified+2−0View file
block/blk-iocost.cmodified+14−8View file
block/blk-iolatency.cmodified+16−14View file
block/blk-ioprio.cmodified+7−50View file
block/blk-ioprio.hmodified+9−0View file
block/blk-lib.cmodified+2−4View file
block/blk-merge.cmodified+46−33View file
block/blk-mq-debugfs-zoned.cmodified+3−3View file
block/blk-mq-debugfs.cmodified+10−9View file
block/blk-mq-sysfs.cmodified+22−23View file
block/blk-mq-tag.cmodified+12−19View file
block/blk-mq-tag.hmodified+4−6View file
block/blk-mq.cmodified+78−27View file
block/blk-mq.hmodified+19−20View file
block/blk-rq-qos.cmodified+2−8View file
block/blk-rq-qos.hmodified+10−1View file
block/blk-settings.cmodified+6−5View file
block/blk-sysfs.cmodified+23−37View file
block/blk-throttle.cmodified+4−3View file
block/blk-wbt.cmodified+20−10View file
block/blk-zoned.cmodified+46−46View file
block/blk.hmodified+23−11View file
block/bounce.cmodified+10−3View file
block/bsg-lib.cmodified+3−3View file
block/elevator.hmodified+1−1View file
block/fops.cmodified+16−12View file
block/genhd.cmodified+32−48View file
block/ioctl.cmodified+1−1View file
block/ioprio.cmodified+50−8View file
block/kyber-iosched.cmodified+4−4View file
block/mq-deadline.cmodified+2−2View file
block/partitions/core.cmodified+1−2View file
drivers/block/Kconfigmodified+9−0View file
drivers/block/Makefilemodified+2−0View file
drivers/block/amiflop.cmodified+1−1View file
drivers/block/aoe/aoeblk.cmodified+1−1View file
drivers/block/aoe/aoedev.cmodified+1−1View file
drivers/block/ataflop.cmodified+2−3View file
drivers/block/brd.cmodified+4−4View file
drivers/block/drbd/drbd_actlog.cmodified+5−4View file
drivers/block/drbd/drbd_bitmap.cmodified+1−1View file
drivers/block/drbd/drbd_int.hmodified+2−3View file
drivers/block/drbd/drbd_main.cmodified+2−2View file
drivers/block/drbd/drbd_receiver.cmodified+12−12View file
drivers/block/drbd/drbd_req.cmodified+2−4View file
drivers/block/drbd/drbd_worker.cmodified+1−1View file
drivers/block/floppy.cmodified+4−4View file
drivers/block/loop.cmodified+1−2View file
drivers/block/mtip32xx/mtip32xx.cmodified+48−259View file
drivers/block/mtip32xx/mtip32xx.hmodified+0−5View file
drivers/block/n64cart.cmodified+1−1View file
drivers/block/nbd.cmodified+4−5View file
drivers/block/null_blk/main.cmodified+7−8View file
drivers/block/null_blk/null_blk.hmodified+5−7View file
drivers/block/null_blk/trace.hmodified+1−1View file
drivers/block/null_blk/zoned.cmodified+6−6View file
drivers/block/paride/pcd.cmodified+2−2View file
drivers/block/paride/pd.cmodified+4−2View file
drivers/block/paride/pf.cmodified+2−2View file
drivers/block/pktcdvd.cmodified+5−9View file
drivers/block/ps3disk.cmodified+2−2View file
drivers/block/ps3vram.cmodified+2−2View file
drivers/block/rbd.cmodified+1−1View file
drivers/block/rnbd/rnbd-clt.cmodified+3−3View file
drivers/block/rnbd/rnbd-proto.hmodified+4−3View file
drivers/block/rnbd/rnbd-srv-dev.cmodified+0−1View file
drivers/block/rnbd/rnbd-srv-dev.hmodified+0−1View file
drivers/block/rnbd/rnbd-srv-sysfs.cmodified+2−3View file
drivers/block/rnbd/rnbd-srv.cmodified+4−5View file
drivers/block/rnbd/rnbd-srv.hmodified+1−2View file
drivers/block/sunvdc.cmodified+2−2View file
drivers/block/swim.cmodified+1−1View file
drivers/block/swim3.cmodified+1−1View file
drivers/block/sx8.cmodified+3−3View file
drivers/block/ublk_drv.cadded+1545−0View file
drivers/block/virtio_blk.cmodified+1−2View file
drivers/block/xen-blkback/blkback.cmodified+3−3View file
drivers/block/xen-blkfront.cmodified+2−2View file
drivers/block/z2ram.cmodified+1−2View file
drivers/block/zram/zram_drv.cmodified+4−4View file
drivers/cdrom/gdrom.cmodified+1−2View file
drivers/infiniband/ulp/srp/ib_srp.cmodified+1−2View file
drivers/md/bcache/super.cmodified+13−14View file
drivers/md/dm-bufio.cmodified+12−14View file
drivers/md/dm-ebs-target.cmodified+8−7View file
drivers/md/dm-flakey.cmodified+6−2View file
drivers/md/dm-integrity.cmodified+38−38View file
drivers/md/dm-io.cmodified+19−19View file
drivers/md/dm-kcopyd.cmodified+13−13View file
drivers/md/dm-log.cmodified+3−5View file
drivers/md/dm-raid.cmodified+1−1View file
drivers/md/dm-raid1.cmodified+5−7View file
drivers/md/dm-snap-persistent.cmodified+12−13View file
drivers/md/dm-table.cmodified+2−4View file
drivers/md/dm-writecache.cmodified+4−8View file
drivers/md/dm-zone.cmodified+43−45View file
drivers/md/dm-zoned-metadata.cmodified+3−2View file
drivers/md/dm-zoned-target.cmodified+12−13View file
drivers/md/dm-zoned.hmodified+1−1View file
drivers/md/dm.cmodified+15−18View file
drivers/md/md-bitmap.cmodified+3−3View file
drivers/md/md.cmodified+8−8View file
drivers/md/md.hmodified+1−2View file
drivers/md/raid1.cmodified+7−7View file
drivers/md/raid10.cmodified+11−11View file
drivers/md/raid5-cache.cmodified+6−6View file
drivers/md/raid5-ppl.cmodified+6−6View file
drivers/md/raid5.cmodified+2−1View file
drivers/memstick/core/ms_block.cmodified+1−2View file
drivers/memstick/core/mspro_block.cmodified+1−2View file
drivers/mmc/core/block.cmodified+3−3View file
drivers/mmc/core/queue.cmodified+1−3View file
drivers/mtd/mtd_blkdevs.cmodified+2−2View file
drivers/mtd/ubi/block.cmodified+2−2View file
drivers/nvdimm/btt.cmodified+4−4View file
drivers/nvdimm/pmem.cmodified+3−3View file
drivers/nvme/host/apple.cmodified+2−3View file
drivers/nvme/host/core.cmodified+2−3View file
drivers/nvme/host/fc.cmodified+8−10View file
drivers/nvme/host/ioctl.cmodified+2−2View file
drivers/nvme/host/multipath.cmodified+2−2View file
drivers/nvme/host/nvme.hmodified+2−2View file
drivers/nvme/host/pci.cmodified+2−2View file
drivers/nvme/host/rdma.cmodified+7−8View file
drivers/nvme/host/tcp.cmodified+7−8View file
drivers/nvme/host/zns.cmodified+3−3View file
drivers/nvme/target/io-cmd-bdev.cmodified+9−8View file
drivers/nvme/target/loop.cmodified+6−6View file
drivers/nvme/target/zns.cmodified+12−12View file
drivers/s390/block/dasd.cmodified+2−2View file
drivers/s390/block/dasd_genhd.cmodified+2−2View file
drivers/s390/block/dasd_int.hmodified+1−1View file
drivers/s390/block/dcssblk.cmodified+4−4View file
drivers/s390/block/scm_blk.cmodified+2−2View file
drivers/scsi/aacraid/comminit.cmodified+1−1View file
drivers/scsi/aacraid/linit.cmodified+1−1View file
drivers/scsi/device_handler/scsi_dh_alua.cmodified+2−2View file
drivers/scsi/device_handler/scsi_dh_emc.cmodified+1−1View file
drivers/scsi/device_handler/scsi_dh_hp_sw.cmodified+2−2View file
drivers/scsi/device_handler/scsi_dh_rdac.cmodified+1−1View file
drivers/scsi/fnic/fnic_scsi.cmodified+4−10View file
drivers/scsi/hosts.cmodified+6−8View file
drivers/scsi/mpi3mr/mpi3mr_os.cmodified+4−12View file
drivers/scsi/scsi_error.cmodified+11−11View file
drivers/scsi/scsi_lib.cmodified+9−17View file
drivers/scsi/scsi_priv.hmodified+2−2View file
drivers/scsi/scsi_sysfs.cmodified+1−1View file
drivers/scsi/sd.cmodified+5−5View file
drivers/scsi/sd_zbc.cmodified+6−6View file
drivers/scsi/sr.cmodified+2−2View file
drivers/target/target_core_iblock.cmodified+2−2View file
drivers/ufs/core/ufshcd.cmodified+2−2View file
drivers/ufs/core/ufshpb.cmodified+3−4View file
fs/btrfs/check-integrity.cmodified+2−2View file
fs/btrfs/compression.cmodified+3−3View file
fs/btrfs/compression.hmodified+1−1View file
fs/btrfs/extent_io.cmodified+9−9View file
fs/btrfs/inode.cmodified+2−2View file
fs/btrfs/raid56.cmodified+2−2View file
fs/buffer.cmodified+31−30View file
fs/direct-io.cmodified+23−17View file
fs/ext4/ext4.hmodified+4−4View file
fs/ext4/fast_commit.cmodified+2−2View file
fs/ext4/mmp.cmodified+6−5View file
fs/ext4/super.cmodified+10−10View file
fs/f2fs/data.cmodified+6−5View file
fs/f2fs/f2fs.hmodified+3−3View file
fs/f2fs/node.cmodified+1−1View file
fs/f2fs/segment.cmodified+1−1View file
fs/gfs2/bmap.cmodified+2−3View file
fs/gfs2/dir.cmodified+2−3View file
fs/gfs2/log.cmodified+2−2View file
fs/gfs2/log.hmodified+1−1View file
fs/gfs2/lops.cmodified+2−2View file
fs/gfs2/lops.hmodified+1−1View file
fs/gfs2/meta_io.cmodified+8−10View file
fs/gfs2/quota.cmodified+1−1View file
fs/hfsplus/hfsplus_fs.hmodified+1−1View file
fs/hfsplus/part_tbl.cmodified+2−3View file
fs/hfsplus/super.cmodified+2−2View file
fs/hfsplus/wrapper.cmodified+6−6View file
fs/iomap/direct-io.cmodified+6−6View file
fs/isofs/compress.cmodified+1−1View file
fs/jbd2/commit.cmodified+4−4View file
fs/jbd2/journal.cmodified+14−11View file
fs/jbd2/recovery.cmodified+2−2View file
fs/mpage.cmodified+3−3View file
fs/nfs/blocklayout/blocklayout.cmodified+6−7View file
fs/nilfs2/btnode.cmodified+4−4View file
fs/nilfs2/btnode.hmodified+2−2View file
fs/nilfs2/btree.cmodified+3−3View file
fs/nilfs2/gcinode.cmodified+3−4View file
fs/nilfs2/mdt.cmodified+10−9View file
fs/ntfs/aops.cmodified+3−3View file
fs/ntfs/compress.cmodified+1−1View file
fs/ntfs/file.cmodified+1−1View file
fs/ntfs/logfile.cmodified+1−1View file
fs/ntfs/mft.cmodified+2−2View file
fs/ntfs3/file.cmodified+1−1View file
fs/ntfs3/fsntfs.cmodified+1−1View file
fs/ntfs3/inode.cmodified+1−1View file
fs/ntfs3/ntfs_fs.hmodified+1−1View file
fs/ocfs2/aops.cmodified+1−1View file
fs/ocfs2/buffer_head_io.cmodified+4−4View file
fs/ocfs2/cluster/heartbeat.cmodified+35−40View file
fs/ocfs2/super.cmodified+1−1View file
fs/reiserfs/inode.cmodified+2−2View file
fs/reiserfs/journal.cmodified+6−6View file
fs/reiserfs/stree.cmodified+2−2View file
fs/reiserfs/super.cmodified+1−1View file
fs/udf/dir.cmodified+1−1View file
fs/udf/directory.cmodified+1−1View file
fs/udf/inode.cmodified+1−1View file
fs/ufs/balloc.cmodified+1−1View file
fs/xfs/xfs_bio_io.cmodified+1−1View file
fs/xfs/xfs_buf.cmodified+2−2View file
fs/xfs/xfs_linux.hmodified+1−1View file
fs/xfs/xfs_log_recover.cmodified+1−1View file
fs/zonefs/super.cmodified+10−12View file
fs/zonefs/trace.hmodified+2−2View file
include/linux/bio.hmodified+5−5View file
include/linux/blk-mq.hmodified+22−12View file
include/linux/blk_types.hmodified+63−56View file
include/linux/blkdev.hmodified+89−135View file
include/linux/blktrace_api.hmodified+2−11View file
include/linux/buffer_head.hmodified+5−4View file
include/linux/dm-io.hmodified+2−2View file
include/linux/ioprio.hmodified+10−14View file
include/linux/jbd2.hmodified+1−1View file
include/linux/uio.hmodified+2−0View file
include/linux/writeback.hmodified+2−2View file
include/scsi/scsi_cmnd.hmodified+2−2View file
include/scsi/scsi_device.hmodified+1−1View file
include/scsi/scsi_host.hmodified+1−1View file
include/trace/events/f2fs.hmodified+11−11View file
include/trace/events/jbd2.hmodified+6−6View file
include/trace/events/nilfs2.hmodified+2−2View file
include/uapi/linux/ublk_cmd.hadded+161−0View file
kernel/power/swap.cmodified+13−16View file
kernel/trace/blktrace.cmodified+30−42View file
lib/iov_iter.cmodified+92−0View file

Only the first 600 diff lines are shown. Download the complete patch.

Documentation/ABI/stable/sysfs-block

View file
diff --git a/Documentation/ABI/stable/sysfs-block b/Documentation/ABI/stable/sysfs-block
index e8797cd..cd14ecb 100644
--- a/Documentation/ABI/stable/sysfs-block
+++ b/Documentation/ABI/stable/sysfs-block
@@ -260,6 +260,15 @@ Description:
for discards, and don't read this file.
+What: /sys/block/<disk>/queue/dma_alignment
+Date: May 2022
+Description:
+ Reports the alignment that user space addresses must have to be
+ used for raw block device access with O_DIRECT and other driver
+ specific passthrough mechanisms.
+
+
What: /sys/block/<disk>/queue/fua
Date: May 2018

Documentation/scsi/scsi_eh.rst

View file
diff --git a/Documentation/scsi/scsi_eh.rst b/Documentation/scsi/scsi_eh.rst
index 885395d..bad624f 100644
--- a/Documentation/scsi/scsi_eh.rst
+++ b/Documentation/scsi/scsi_eh.rst
@@ -87,8 +87,7 @@ with the command.
1.2.2 Completing a scmd w/ timeout
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-The timeout handler is scsi_times_out(). When a timeout occurs, this
-function
+The timeout handler is scsi_timeout(). When a timeout occurs, this function
1. invokes optional hostt->eh_timed_out() callback. Return value can
be one of

Documentation/scsi/scsi_mid_low_api.rst

View file
diff --git a/Documentation/scsi/scsi_mid_low_api.rst b/Documentation/scsi/scsi_mid_low_api.rst
index 63ddea2..a8c5bd1 100644
--- a/Documentation/scsi/scsi_mid_low_api.rst
+++ b/Documentation/scsi/scsi_mid_low_api.rst
@@ -731,7 +731,7 @@ Details::
* Notes: If 'no_async_abort' is defined this callback
* will be invoked from scsi_eh thread. No other commands
* will then be queued on current host during eh.
- * Otherwise it will be called whenever scsi_times_out()
+ * Otherwise it will be called whenever scsi_timeout()
* is called due to a command timeout.
*
* Optionally defined in: LLD

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index b2e6ce3..44e966f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -20539,6 +20539,13 @@ F: Documentation/filesystems/ubifs-authentication.rst
F: Documentation/filesystems/ubifs.rst
F: fs/ubifs/
+UBLK USERSPACE BLOCK DRIVER
+M: Ming Lei <[email protected]>
+S: Maintained
+F: drivers/block/ublk_drv.c
+F: include/uapi/linux/ublk_cmd.h
+
UCLINUX (M68KNOMMU AND COLDFIRE)
M: Greg Ungerer <[email protected]>

arch/m68k/emu/nfblock.c

View file
diff --git a/arch/m68k/emu/nfblock.c b/arch/m68k/emu/nfblock.c
index 267b02c..a708fbd 100644
--- a/arch/m68k/emu/nfblock.c
+++ b/arch/m68k/emu/nfblock.c
@@ -138,7 +138,7 @@ static int __init nfhd_init_one(int id, u32 blocks, u32 bsize)
return 0;
out_cleanup_disk:
- blk_cleanup_disk(dev->disk);
+ put_disk(dev->disk);
free_dev:
kfree(dev);
out:
@@ -180,7 +180,7 @@ static void __exit nfhd_exit(void)
list_for_each_entry_safe(dev, next, &nfhd_list, list) {
list_del(&dev->list);
del_gendisk(dev->disk);
- blk_cleanup_disk(dev->disk);
+ put_disk(dev->disk);
kfree(dev);
}
unregister_blkdev(major_num, "nfhd");

arch/um/drivers/ubd_kern.c

View file
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index c4344b6..eb2d2f0 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -925,7 +925,7 @@ static int ubd_add(int n, char **error_out)
return 0;
out_cleanup_disk:
- blk_cleanup_disk(disk);
+ put_disk(disk);
out_cleanup_tags:
blk_mq_free_tag_set(&ubd_dev->tag_set);
out:
@@ -1032,7 +1032,7 @@ static int ubd_remove(int n, char **error_out)
ubd_gendisk[n] = NULL;
if(disk != NULL){
del_gendisk(disk);
- blk_cleanup_disk(disk);
+ put_disk(disk);
}
err = 0;
@@ -1262,7 +1262,7 @@ static void ubd_map_req(struct ubd *dev, struct io_thread_req *io_req,
struct req_iterator iter;
int i = 0;
unsigned long byte_offset = io_req->offset;
- int op = req_op(req);
+ enum req_op op = req_op(req);
if (op == REQ_OP_WRITE_ZEROES || op == REQ_OP_DISCARD) {
io_req->io_desc[0].buffer = NULL;
@@ -1325,7 +1325,7 @@ static int ubd_submit_request(struct ubd *dev, struct request *req)
int segs = 0;
struct io_thread_req *io_req;
int ret;
- int op = req_op(req);
+ enum req_op op = req_op(req);
if (op == REQ_OP_FLUSH)
segs = 0;

arch/xtensa/platforms/iss/simdisk.c

View file
diff --git a/arch/xtensa/platforms/iss/simdisk.c b/arch/xtensa/platforms/iss/simdisk.c
index 4255b92..f50caaa 100644
--- a/arch/xtensa/platforms/iss/simdisk.c
+++ b/arch/xtensa/platforms/iss/simdisk.c
@@ -290,7 +290,7 @@ static int __init simdisk_setup(struct simdisk *dev, int which,
return 0;
out_cleanup_disk:
- blk_cleanup_disk(dev->gd);
+ put_disk(dev->gd);
out:
return err;
}
@@ -344,7 +344,7 @@ static void simdisk_teardown(struct simdisk *dev, int which,
simdisk_detach(dev);
if (dev->gd) {
del_gendisk(dev->gd);
- blk_cleanup_disk(dev->gd);
+ put_disk(dev->gd);
}
remove_proc_entry(tmp, procdir);
}

block/Kconfig

View file
diff --git a/block/Kconfig b/block/Kconfig
index 50b17e2..444c5ab 100644
--- a/block/Kconfig
+++ b/block/Kconfig
@@ -147,7 +147,6 @@ config BLK_CGROUP_FC_APPID
config BLK_CGROUP_IOCOST
bool "Enable support for cost model based cgroup IO controller"
depends on BLK_CGROUP
- select BLK_RQ_IO_DATA_LEN
select BLK_RQ_ALLOC_TIME
help
Enabling this option enables the .weight interface for cost

block/bdev.c

View file
diff --git a/block/bdev.c b/block/bdev.c
index 5fe06c1..ce05175 100644
--- a/block/bdev.c
+++ b/block/bdev.c
@@ -54,12 +54,10 @@ static void bdev_write_inode(struct block_device *bdev)
while (inode->i_state & I_DIRTY) {
spin_unlock(&inode->i_lock);
ret = write_inode_now(inode, true);
- if (ret) {
- char name[BDEVNAME_SIZE];
- pr_warn_ratelimited("VFS: Dirty inode writeback failed "
- "for block device %s (err=%d).\n",
- bdevname(bdev, name), ret);
- }
+ if (ret)
+ pr_warn_ratelimited(
+ "VFS: Dirty inode writeback failed for block device %pg (err=%d).\n",
+ bdev, ret);
spin_lock(&inode->i_lock);
}
spin_unlock(&inode->i_lock);

block/bfq-cgroup.c

View file
diff --git a/block/bfq-cgroup.c b/block/bfq-cgroup.c
index 09574af..30b15a9 100644
--- a/block/bfq-cgroup.c
+++ b/block/bfq-cgroup.c
@@ -220,46 +220,46 @@ void bfqg_stats_update_avg_queue_size(struct bfq_group *bfqg)
}
void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
- unsigned int op)
+ blk_opf_t opf)
{
- blkg_rwstat_add(&bfqg->stats.queued, op, 1);
+ blkg_rwstat_add(&bfqg->stats.queued, opf, 1);
bfqg_stats_end_empty_time(&bfqg->stats);
if (!(bfqq == ((struct bfq_data *)bfqg->bfqd)->in_service_queue))
bfqg_stats_set_start_group_wait_time(bfqg, bfqq_group(bfqq));
}
-void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op)
+void bfqg_stats_update_io_remove(struct bfq_group *bfqg, blk_opf_t opf)
{
- blkg_rwstat_add(&bfqg->stats.queued, op, -1);
+ blkg_rwstat_add(&bfqg->stats.queued, opf, -1);
}
-void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op)
+void bfqg_stats_update_io_merged(struct bfq_group *bfqg, blk_opf_t opf)
{
- blkg_rwstat_add(&bfqg->stats.merged, op, 1);
+ blkg_rwstat_add(&bfqg->stats.merged, opf, 1);
}
void bfqg_stats_update_completion(struct bfq_group *bfqg, u64 start_time_ns,
- u64 io_start_time_ns, unsigned int op)
+ u64 io_start_time_ns, blk_opf_t opf)
{
struct bfqg_stats *stats = &bfqg->stats;
u64 now = ktime_get_ns();
if (now > io_start_time_ns)
- blkg_rwstat_add(&stats->service_time, op,
+ blkg_rwstat_add(&stats->service_time, opf,
now - io_start_time_ns);
if (io_start_time_ns > start_time_ns)
- blkg_rwstat_add(&stats->wait_time, op,
+ blkg_rwstat_add(&stats->wait_time, opf,
io_start_time_ns - start_time_ns);
}
#else /* CONFIG_BFQ_CGROUP_DEBUG */
void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
- unsigned int op) { }
-void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op) { }
-void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op) { }
+ blk_opf_t opf) { }
+void bfqg_stats_update_io_remove(struct bfq_group *bfqg, blk_opf_t opf) { }
+void bfqg_stats_update_io_merged(struct bfq_group *bfqg, blk_opf_t opf) { }
void bfqg_stats_update_completion(struct bfq_group *bfqg, u64 start_time_ns,
- u64 io_start_time_ns, unsigned int op) { }
+ u64 io_start_time_ns, blk_opf_t opf) { }
void bfqg_stats_update_dequeue(struct bfq_group *bfqg) { }
void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg) { }
void bfqg_stats_update_idle_time(struct bfq_group *bfqg) { }
@@ -706,10 +706,10 @@ void bfq_bfqq_move(struct bfq_data *bfqd, struct bfq_queue *bfqq,
}
/**
- * __bfq_bic_change_cgroup - move @bic to @cgroup.
+ * __bfq_bic_change_cgroup - move @bic to @bfqg.
* @bfqd: the queue descriptor.
* @bic: the bic to move.
- * @blkcg: the blk-cgroup to move to.
+ * @bfqg: the group to move to.
*
* Move bic to blkcg, assuming that bfqd->lock is held; which makes
* sure that the reference to cgroup is valid across the call (see
@@ -863,6 +863,7 @@ static void bfq_flush_idle_tree(struct bfq_service_tree *st)
* @bfqd: the device data structure with the root group.
* @entity: the entity to move, if entity is a leaf; or the parent entity
* of an active leaf entity to move, if entity is not a leaf.
+ * @ioprio_class: I/O priority class to reparent.
*/
static void bfq_reparent_leaf_entity(struct bfq_data *bfqd,
struct bfq_entity *entity,
@@ -892,6 +893,7 @@ static void bfq_reparent_leaf_entity(struct bfq_data *bfqd,
* @bfqd: the device data structure with the root group.
* @bfqg: the group to move from.
* @st: the service tree to start the search from.
+ * @ioprio_class: I/O priority class to reparent.
*/
static void bfq_reparent_active_queues(struct bfq_data *bfqd,
struct bfq_group *bfqg,
@@ -1471,8 +1473,6 @@ struct bfq_group *bfqq_group(struct bfq_queue *bfqq)
return bfqq->bfqd->root_group;
}
-void bfqg_and_blkg_get(struct bfq_group *bfqg) {}
-
void bfqg_and_blkg_put(struct bfq_group *bfqg) {}
struct bfq_group *bfq_create_group_hierarchy(struct bfq_data *bfqd, int node)

block/bfq-iosched.c

View file
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index e6d7e6b..c740b41 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -668,19 +668,19 @@ static bool bfqq_request_over_limit(struct bfq_queue *bfqq, int limit)
* significantly affect service guarantees coming from the BFQ scheduling
* algorithm.
*/
-static void bfq_limit_depth(unsigned int op, struct blk_mq_alloc_data *data)
+static void bfq_limit_depth(blk_opf_t opf, struct blk_mq_alloc_data *data)
{
struct bfq_data *bfqd = data->q->elevator->elevator_data;
struct bfq_io_cq *bic = bfq_bic_lookup(data->q);
- struct bfq_queue *bfqq = bic ? bic_to_bfqq(bic, op_is_sync(op)) : NULL;
+ struct bfq_queue *bfqq = bic ? bic_to_bfqq(bic, op_is_sync(opf)) : NULL;
int depth;
unsigned limit = data->q->nr_requests;
/* Sync reads have full depth available */
- if (op_is_sync(op) && !op_is_write(op)) {
+ if (op_is_sync(opf) && !op_is_write(opf)) {
depth = 0;
} else {
- depth = bfqd->word_depths[!!bfqd->wr_busy_queues][op_is_sync(op)];
+ depth = bfqd->word_depths[!!bfqd->wr_busy_queues][op_is_sync(opf)];
limit = (limit * depth) >> bfqd->full_depth_shift;
}
@@ -693,7 +693,7 @@ static void bfq_limit_depth(unsigned int op, struct blk_mq_alloc_data *data)
depth = 1;
bfq_log(bfqd, "[%s] wr_busy %d sync %d depth %u",
- __func__, bfqd->wr_busy_queues, op_is_sync(op), depth);
+ __func__, bfqd->wr_busy_queues, op_is_sync(opf), depth);
if (depth)
data->shallow_depth = depth;
}
@@ -6104,7 +6104,7 @@ static bool __bfq_insert_request(struct bfq_data *bfqd, struct request *rq)
static void bfq_update_insert_stats(struct request_queue *q,
struct bfq_queue *bfqq,
bool idle_timer_disabled,
- unsigned int cmd_flags)
+ blk_opf_t cmd_flags)
{
if (!bfqq)
return;
@@ -6129,7 +6129,7 @@ static void bfq_update_insert_stats(struct request_queue *q,
static inline void bfq_update_insert_stats(struct request_queue *q,
struct bfq_queue *bfqq,
bool idle_timer_disabled,
- unsigned int cmd_flags) {}
+ blk_opf_t cmd_flags) {}
#endif /* CONFIG_BFQ_CGROUP_DEBUG */
static struct bfq_queue *bfq_init_rq(struct request *rq);
@@ -6141,7 +6141,7 @@ static void bfq_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
struct bfq_data *bfqd = q->elevator->elevator_data;
struct bfq_queue *bfqq;
bool idle_timer_disabled = false;
- unsigned int cmd_flags;
+ blk_opf_t cmd_flags;
LIST_HEAD(free);
#ifdef CONFIG_BFQ_GROUP_IOSCHED

block/bfq-iosched.h

View file
diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h
index ca8177d..ad8e513 100644
--- a/block/bfq-iosched.h
+++ b/block/bfq-iosched.h
@@ -994,11 +994,11 @@ void bfq_put_async_queues(struct bfq_data *bfqd, struct bfq_group *bfqg);
void bfqg_stats_update_legacy_io(struct request_queue *q, struct request *rq);
void bfqg_stats_update_io_add(struct bfq_group *bfqg, struct bfq_queue *bfqq,
- unsigned int op);
-void bfqg_stats_update_io_remove(struct bfq_group *bfqg, unsigned int op);
-void bfqg_stats_update_io_merged(struct bfq_group *bfqg, unsigned int op);
+ blk_opf_t opf);
+void bfqg_stats_update_io_remove(struct bfq_group *bfqg, blk_opf_t opf);
+void bfqg_stats_update_io_merged(struct bfq_group *bfqg, blk_opf_t opf);
void bfqg_stats_update_completion(struct bfq_group *bfqg, u64 start_time_ns,
- u64 io_start_time_ns, unsigned int op);
+ u64 io_start_time_ns, blk_opf_t opf);
void bfqg_stats_update_dequeue(struct bfq_group *bfqg);
void bfqg_stats_set_start_empty_time(struct bfq_group *bfqg);
void bfqg_stats_update_idle_time(struct bfq_group *bfqg);

block/bfq-wf2q.c

View file
diff --git a/block/bfq-wf2q.c b/block/bfq-wf2q.c
index f8eb340..983413c 100644
--- a/block/bfq-wf2q.c
+++ b/block/bfq-wf2q.c
@@ -1360,6 +1360,8 @@ left:
/**
* __bfq_lookup_next_entity - return the first eligible entity in @st.
* @st: the service tree.
+ * @in_service: whether or not there is an in-service entity for the sched_data
+ * this active tree belongs to.
*
* If there is no in-service entity for the sched_data st belongs to,
* then return the entity that will be set in service if:
@@ -1472,9 +1474,6 @@ static struct bfq_entity *bfq_lookup_next_entity(struct bfq_sched_data *sd,
break;
}
- if (!entity)
- return NULL;
-
return entity;
}

block/bio.c

View file
diff --git a/block/bio.c b/block/bio.c
index 51c99f2..6f9f883 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -239,7 +239,7 @@ static void bio_free(struct bio *bio)
* when IO has completed, or when the bio is released.
*/
void bio_init(struct bio *bio, struct block_device *bdev, struct bio_vec *table,
- unsigned short max_vecs, unsigned int opf)
+ unsigned short max_vecs, blk_opf_t opf)
{
bio->bi_next = NULL;
bio->bi_bdev = bdev;
@@ -292,7 +292,7 @@ EXPORT_SYMBOL(bio_init);
* preserved are the ones that are initialized by bio_alloc_bioset(). See
* comment in struct bio.
*/
-void bio_reset(struct bio *bio, struct block_device *bdev, unsigned int opf)
+void bio_reset(struct bio *bio, struct block_device *bdev, blk_opf_t opf)
{
bio_uninit(bio);
memset(bio, 0, BIO_RESET_BYTES);
@@ -341,7 +341,7 @@ void bio_chain(struct bio *bio, struct bio *parent)
EXPORT_SYMBOL(bio_chain);
struct bio *blk_next_bio(struct bio *bio, struct block_device *bdev,
- unsigned int nr_pages, unsigned int opf, gfp_t gfp)
+ unsigned int nr_pages, blk_opf_t opf, gfp_t gfp)
{
struct bio *new = bio_alloc(bdev, nr_pages, opf, gfp);
@@ -409,7 +409,7 @@ static void punt_bios_to_rescuer(struct bio_set *bs)
}
static struct bio *bio_alloc_percpu_cache(struct block_device *bdev,
- unsigned short nr_vecs, unsigned int opf, gfp_t gfp,
+ unsigned short nr_vecs, blk_opf_t opf, gfp_t gfp,
struct bio_set *bs)
{
struct bio_alloc_cache *cache;
@@ -468,7 +468,7 @@ static struct bio *bio_alloc_percpu_cache(struct block_device *bdev,
* Returns: Pointer to new bio on success, NULL on failure.
*/
struct bio *bio_alloc_bioset(struct block_device *bdev, unsigned short nr_vecs,
- unsigned int opf, gfp_t gfp_mask,
+ blk_opf_t opf, gfp_t gfp_mask,
struct bio_set *bs)
{
gfp_t saved_gfp = gfp_mask;
@@ -1033,7 +1033,7 @@ int bio_add_zone_append_page(struct bio *bio, struct page *page,
if (WARN_ON_ONCE(bio_op(bio) != REQ_OP_ZONE_APPEND))
return 0;
- if (WARN_ON_ONCE(!blk_queue_is_zoned(q)))
+ if (WARN_ON_ONCE(!bdev_is_zoned(bio->bi_bdev)))
return 0;
return bio_add_hw_page(q, bio, page, len, offset,
@@ -1159,6 +1159,37 @@ static void bio_put_pages(struct page **pages, size_t size, size_t off)
put_page(pages[i]);
}
+static int bio_iov_add_page(struct bio *bio, struct page *page,
+ unsigned int len, unsigned int offset)
+{
+ bool same_page = false;
+
+ if (!__bio_try_merge_page(bio, page, len, offset, &same_page)) {
+ if (WARN_ON_ONCE(bio_full(bio, len)))
+ return -EINVAL;
+ __bio_add_page(bio, page, len, offset);
+ return 0;
+ }
+
+ if (same_page)
+ put_page(page);
+ return 0;
+}
+
+static int bio_iov_add_zone_append_page(struct bio *bio, struct page *page,
+ unsigned int len, unsigned int offset)
+{
+ struct request_queue *q = bdev_get_queue(bio->bi_bdev);
+ bool same_page = false;
+
+ if (bio_add_hw_page(q, bio, page, len, offset,
+ queue_max_zone_append_sectors(q), &same_page) != len)
+ return -EINVAL;
+ if (same_page)
+ put_page(page);
+ return 0;
+}
+
#define PAGE_PTRS_PER_BVEC (sizeof(struct bio_vec) / sizeof(struct page *))
/**
@@ -1177,7 +1208,6 @@ static int __bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
unsigned short entries_left = bio->bi_max_vecs - bio->bi_vcnt;
struct bio_vec *bv = bio->bi_io_vec + bio->bi_vcnt;
struct page **pages = (struct page **)bv;
- bool same_page = false;
ssize_t size, left;
unsigned len, i;
size_t offset;
@@ -1186,82 +1216,43 @@ static int __bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
* Move page array up in the allocated memory for the bio vecs as far as
* possible so that we can start filling biovecs from the beginning
* without overwriting the temporary page array.
- */
+ */
BUILD_BUG_ON(PAGE_PTRS_PER_BVEC < 2);
pages += entries_left * (PAGE_PTRS_PER_BVEC - 1);
- size = iov_iter_get_pages(iter, pages, LONG_MAX, nr_pages, &offset);
- if (unlikely(size <= 0))
- return size ? size : -EFAULT;
-
- for (left = size, i = 0; left > 0; left -= len, i++) {
- struct page *page = pages[i];
-
- len = min_t(size_t, PAGE_SIZE - offset, left);
-
- if (__bio_try_merge_page(bio, page, len, offset, &same_page)) {
- if (same_page)
- put_page(page);
- } else {
- if (WARN_ON_ONCE(bio_full(bio, len))) {
- bio_put_pages(pages + i, left, offset);
- return -EINVAL;
- }
- __bio_add_page(bio, page, len, offset);
- }
- offset = 0;
- }
-
- iov_iter_advance(iter, size);
- return 0;
-}
-
-static int __bio_iov_append_get_pages(struct bio *bio, struct iov_iter *iter)
-{
- unsigned short nr_pages = bio->bi_max_vecs - bio->bi_vcnt;
- unsigned short entries_left = bio->bi_max_vecs - bio->bi_vcnt;
- struct request_queue *q = bdev_get_queue(bio->bi_bdev);
- unsigned int max_append_sectors = queue_max_zone_append_sectors(q);
- struct bio_vec *bv = bio->bi_io_vec + bio->bi_vcnt;
- struct page **pages = (struct page **)bv;
- ssize_t size, left;
- unsigned len, i;
- size_t offset;
- int ret = 0;
-
- if (WARN_ON_ONCE(!max_append_sectors))
- return 0;
-
/*
- * Move page array up in the allocated memory for the bio vecs as far as
- * possible so that we can start filling biovecs from the beginning
- * without overwriting the temporary page array.
+ * Each segment in the iov is required to be a block size multiple.
+ * However, we may not be able to get the entire segment if it spans
+ * more pages than bi_max_vecs allows, so we have to ALIGN_DOWN the
+ * result to ensure the bio's total size is correct. The remainder of
+ * the iov data will be picked up in the next bio iteration.
*/
- BUILD_BUG_ON(PAGE_PTRS_PER_BVEC < 2);
- pages += entries_left * (PAGE_PTRS_PER_BVEC - 1);
-
size = iov_iter_get_pages(iter, pages, LONG_MAX, nr_pages, &offset);
+ if (size > 0)
+ size = ALIGN_DOWN(size, bdev_logical_block_size(bio->bi_bdev));
if (unlikely(size <= 0))
return size ? size : -EFAULT;
for (left = size, i = 0; left > 0; left -= len, i++) {
struct page *page = pages[i];
- bool same_page = false;
+ int ret;
len = min_t(size_t, PAGE_SIZE - offset, left);
- if (bio_add_hw_page(q, bio, page, len, offset,
- max_append_sectors, &same_page) != len) {
+ if (bio_op(bio) == REQ_OP_ZONE_APPEND)
+ ret = bio_iov_add_zone_append_page(bio, page, len,
+ offset);
+ else
+ ret = bio_iov_add_page(bio, page, len, offset);
+
+ if (ret) {
bio_put_pages(pages + i, left, offset);
- ret = -EINVAL;
- break;
+ return ret;
}
- if (same_page)
- put_page(page);
offset = 0;
}
- iov_iter_advance(iter, size - left);
- return ret;
+ iov_iter_advance(iter, size);
+ return 0;
}
/**
@@ -1298,10 +1289,7 @@ int bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
}

This diff is incomplete. Download the complete patch.

block/blk-cgroup-rwstat.h

View file

This diff is incomplete. Download the complete patch.

block/blk-cgroup.c

View file

This diff is incomplete. Download the complete patch.

block/blk-cgroup.h

View file

This diff is incomplete. Download the complete patch.

block/blk-core.c

View file

This diff is incomplete. Download the complete patch.

block/blk-flush.c

View file

This diff is incomplete. Download the complete patch.

block/blk-ia-ranges.c

View file

This diff is incomplete. Download the complete patch.

block/blk-ioc.c

View file

This diff is incomplete. Download the complete patch.

block/blk-iocost.c

View file

This diff is incomplete. Download the complete patch.

block/blk-iolatency.c

View file

This diff is incomplete. Download the complete patch.

block/blk-ioprio.c

View file

This diff is incomplete. Download the complete patch.

block/blk-ioprio.h

View file

This diff is incomplete. Download the complete patch.

block/blk-lib.c

View file

This diff is incomplete. Download the complete patch.

block/blk-merge.c

View file

This diff is incomplete. Download the complete patch.

block/blk-mq-debugfs-zoned.c

View file

This diff is incomplete. Download the complete patch.

block/blk-mq-debugfs.c

View file

This diff is incomplete. Download the complete patch.

block/blk-mq-sysfs.c

View file

This diff is incomplete. Download the complete patch.

block/blk-mq-tag.c

View file

This diff is incomplete. Download the complete patch.

block/blk-mq-tag.h

View file

This diff is incomplete. Download the complete patch.

block/blk-mq.c

View file

This diff is incomplete. Download the complete patch.

block/blk-mq.h

View file

This diff is incomplete. Download the complete patch.

block/blk-rq-qos.c

View file

This diff is incomplete. Download the complete patch.

block/blk-rq-qos.h

View file

This diff is incomplete. Download the complete patch.

block/blk-settings.c

View file

This diff is incomplete. Download the complete patch.

block/blk-sysfs.c

View file

This diff is incomplete. Download the complete patch.

block/blk-throttle.c

View file

This diff is incomplete. Download the complete patch.

block/blk-wbt.c

View file

This diff is incomplete. Download the complete patch.

block/blk-zoned.c

View file

This diff is incomplete. Download the complete patch.

block/blk.h

View file

This diff is incomplete. Download the complete patch.

block/bounce.c

View file

This diff is incomplete. Download the complete patch.

block/bsg-lib.c

View file

This diff is incomplete. Download the complete patch.

block/elevator.h

View file

This diff is incomplete. Download the complete patch.

block/fops.c

View file

This diff is incomplete. Download the complete patch.

block/genhd.c

View file

This diff is incomplete. Download the complete patch.

block/ioctl.c

View file

This diff is incomplete. Download the complete patch.

block/ioprio.c

View file

This diff is incomplete. Download the complete patch.

block/kyber-iosched.c

View file

This diff is incomplete. Download the complete patch.

block/mq-deadline.c

View file

This diff is incomplete. Download the complete patch.

block/partitions/core.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/Kconfig

View file

This diff is incomplete. Download the complete patch.

drivers/block/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/block/amiflop.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/aoe/aoeblk.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/aoe/aoedev.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/ataflop.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/brd.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/drbd/drbd_actlog.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/drbd/drbd_bitmap.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/drbd/drbd_int.h

View file

This diff is incomplete. Download the complete patch.

drivers/block/drbd/drbd_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/drbd/drbd_receiver.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/drbd/drbd_req.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/drbd/drbd_worker.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/floppy.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/loop.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/mtip32xx/mtip32xx.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/mtip32xx/mtip32xx.h

View file

This diff is incomplete. Download the complete patch.

drivers/block/n64cart.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/nbd.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/null_blk/main.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/null_blk/null_blk.h

View file

This diff is incomplete. Download the complete patch.

drivers/block/null_blk/trace.h

View file

This diff is incomplete. Download the complete patch.

drivers/block/null_blk/zoned.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/paride/pcd.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/paride/pd.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/paride/pf.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/pktcdvd.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/ps3disk.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/ps3vram.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/rbd.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/rnbd/rnbd-clt.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/rnbd/rnbd-proto.h

View file

This diff is incomplete. Download the complete patch.

drivers/block/rnbd/rnbd-srv-dev.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/rnbd/rnbd-srv-dev.h

View file

This diff is incomplete. Download the complete patch.

drivers/block/rnbd/rnbd-srv-sysfs.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/rnbd/rnbd-srv.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/rnbd/rnbd-srv.h

View file

This diff is incomplete. Download the complete patch.

drivers/block/sunvdc.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/swim.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/swim3.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/sx8.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/ublk_drv.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/virtio_blk.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/xen-blkback/blkback.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/xen-blkfront.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/z2ram.c

View file

This diff is incomplete. Download the complete patch.

drivers/block/zram/zram_drv.c

View file

This diff is incomplete. Download the complete patch.

drivers/cdrom/gdrom.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/ulp/srp/ib_srp.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/bcache/super.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-bufio.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-ebs-target.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-flakey.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-integrity.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-io.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-kcopyd.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-log.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-raid.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-raid1.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-snap-persistent.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-table.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-writecache.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-zone.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-zoned-metadata.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-zoned-target.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm-zoned.h

View file

This diff is incomplete. Download the complete patch.

drivers/md/dm.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/md-bitmap.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/md.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/md.h

View file

This diff is incomplete. Download the complete patch.

drivers/md/raid1.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/raid10.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/raid5-cache.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/raid5-ppl.c

View file

This diff is incomplete. Download the complete patch.

drivers/md/raid5.c

View file

This diff is incomplete. Download the complete patch.

drivers/memstick/core/ms_block.c

View file

This diff is incomplete. Download the complete patch.

drivers/memstick/core/mspro_block.c

View file

This diff is incomplete. Download the complete patch.

drivers/mmc/core/block.c

View file

This diff is incomplete. Download the complete patch.

drivers/mmc/core/queue.c

View file

This diff is incomplete. Download the complete patch.

drivers/mtd/mtd_blkdevs.c

View file

This diff is incomplete. Download the complete patch.

drivers/mtd/ubi/block.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvdimm/btt.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvdimm/pmem.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/apple.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/core.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/fc.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/ioctl.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/multipath.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/nvme.h

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/pci.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/rdma.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/tcp.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/host/zns.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/target/io-cmd-bdev.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/target/loop.c

View file

This diff is incomplete. Download the complete patch.

drivers/nvme/target/zns.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/block/dasd.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/block/dasd_genhd.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/block/dasd_int.h

View file

This diff is incomplete. Download the complete patch.

drivers/s390/block/dcssblk.c

View file

This diff is incomplete. Download the complete patch.

drivers/s390/block/scm_blk.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/aacraid/comminit.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/aacraid/linit.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/device_handler/scsi_dh_alua.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/device_handler/scsi_dh_emc.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/device_handler/scsi_dh_hp_sw.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/device_handler/scsi_dh_rdac.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/fnic/fnic_scsi.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/hosts.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/mpi3mr/mpi3mr_os.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi_error.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi_lib.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi_priv.h

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/scsi_sysfs.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/sd.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/sd_zbc.c

View file

This diff is incomplete. Download the complete patch.

drivers/scsi/sr.c

View file

This diff is incomplete. Download the complete patch.

drivers/target/target_core_iblock.c

View file

This diff is incomplete. Download the complete patch.

drivers/ufs/core/ufshcd.c

View file

This diff is incomplete. Download the complete patch.

drivers/ufs/core/ufshpb.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/check-integrity.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/compression.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/compression.h

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/extent_io.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/btrfs/raid56.c

View file

This diff is incomplete. Download the complete patch.

fs/buffer.c

View file

This diff is incomplete. Download the complete patch.

fs/direct-io.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/ext4.h

View file

This diff is incomplete. Download the complete patch.

fs/ext4/fast_commit.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/mmp.c

View file

This diff is incomplete. Download the complete patch.

fs/ext4/super.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/data.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/f2fs.h

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/node.c

View file

This diff is incomplete. Download the complete patch.

fs/f2fs/segment.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/bmap.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/log.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/log.h

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/lops.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/lops.h

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/meta_io.c

View file

This diff is incomplete. Download the complete patch.

fs/gfs2/quota.c

View file

This diff is incomplete. Download the complete patch.

fs/hfsplus/hfsplus_fs.h

View file

This diff is incomplete. Download the complete patch.

fs/hfsplus/part_tbl.c

View file

This diff is incomplete. Download the complete patch.

fs/hfsplus/super.c

View file

This diff is incomplete. Download the complete patch.

fs/hfsplus/wrapper.c

View file

This diff is incomplete. Download the complete patch.

fs/iomap/direct-io.c

View file

This diff is incomplete. Download the complete patch.

fs/isofs/compress.c

View file

This diff is incomplete. Download the complete patch.

fs/jbd2/commit.c

View file

This diff is incomplete. Download the complete patch.

fs/jbd2/journal.c

View file

This diff is incomplete. Download the complete patch.

fs/jbd2/recovery.c

View file

This diff is incomplete. Download the complete patch.

fs/mpage.c

View file

This diff is incomplete. Download the complete patch.

fs/nfs/blocklayout/blocklayout.c

View file

This diff is incomplete. Download the complete patch.

fs/nilfs2/btnode.c

View file

This diff is incomplete. Download the complete patch.

fs/nilfs2/btnode.h

View file

This diff is incomplete. Download the complete patch.

fs/nilfs2/btree.c

View file

This diff is incomplete. Download the complete patch.

fs/nilfs2/gcinode.c

View file

This diff is incomplete. Download the complete patch.

fs/nilfs2/mdt.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs/aops.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs/compress.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs/file.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs/logfile.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs/mft.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs3/file.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs3/fsntfs.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs3/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ntfs3/ntfs_fs.h

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/aops.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/buffer_head_io.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/cluster/heartbeat.c

View file

This diff is incomplete. Download the complete patch.

fs/ocfs2/super.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/journal.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/stree.c

View file

This diff is incomplete. Download the complete patch.

fs/reiserfs/super.c

View file

This diff is incomplete. Download the complete patch.

fs/udf/dir.c

View file

This diff is incomplete. Download the complete patch.

fs/udf/directory.c

View file

This diff is incomplete. Download the complete patch.

fs/udf/inode.c

View file

This diff is incomplete. Download the complete patch.

fs/ufs/balloc.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_bio_io.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_buf.c

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_linux.h

View file

This diff is incomplete. Download the complete patch.

fs/xfs/xfs_log_recover.c

View file

This diff is incomplete. Download the complete patch.

fs/zonefs/super.c

View file

This diff is incomplete. Download the complete patch.

fs/zonefs/trace.h

View file

This diff is incomplete. Download the complete patch.

include/linux/bio.h

View file

This diff is incomplete. Download the complete patch.

include/linux/blk-mq.h

View file

This diff is incomplete. Download the complete patch.

include/linux/blk_types.h

View file

This diff is incomplete. Download the complete patch.

include/linux/blkdev.h

View file

This diff is incomplete. Download the complete patch.

include/linux/blktrace_api.h

View file

This diff is incomplete. Download the complete patch.

include/linux/buffer_head.h

View file

This diff is incomplete. Download the complete patch.

include/linux/dm-io.h

View file

This diff is incomplete. Download the complete patch.

include/linux/ioprio.h

View file

This diff is incomplete. Download the complete patch.

include/linux/jbd2.h

View file

This diff is incomplete. Download the complete patch.

include/linux/uio.h

View file

This diff is incomplete. Download the complete patch.

include/linux/writeback.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/scsi_cmnd.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/scsi_device.h

View file

This diff is incomplete. Download the complete patch.

include/scsi/scsi_host.h

View file

This diff is incomplete. Download the complete patch.

include/trace/events/f2fs.h

View file

This diff is incomplete. Download the complete patch.

include/trace/events/jbd2.h

View file

This diff is incomplete. Download the complete patch.

include/trace/events/nilfs2.h

View file

This diff is incomplete. Download the complete patch.

include/uapi/linux/ublk_cmd.h

View file

This diff is incomplete. Download the complete patch.

kernel/power/swap.c

View file

This diff is incomplete. Download the complete patch.

kernel/trace/blktrace.c

View file

This diff is incomplete. Download the complete patch.

lib/iov_iter.c

View file

This diff is incomplete. Download the complete patch.