From: Jens Axboe <axboe@kernel.dk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "linux-block@vger.kernel.org" <linux-block@vger.kernel.org>
Subject: [GIT PULL] Core block/IO changes for 4.13-rc
Date: Sun, 2 Jul 2017 17:44:32 -0600 [thread overview]
Message-ID: <c2565c20-527f-72fb-dc5c-bb81f56220f9@kernel.dk> (raw)
Hi Linus,
This is the main pull request for the block layer for 4.13. Not a huge
round in terms of features, but there's a lot of churn related to some
core cleanups. Note that merge request will throw 3 merge failures for
you. I've included how I resolved them in the for-next (or
for-4.13/merge) branch after the pull stats, at the end of this email.
Note this depends on the UUID tree pull request, that Christoph already
sent out.
This pull request contains:
- A series from Christoph, unifying the error/stats codes in the block
layer. We now use blk_status_t everywhere, instead of using different
schemes for different places.
- Also from Christoph, some cleanups around request allocation and IO
scheduler interactions in blk-mq.
- And yet another series from Christoph, cleaning up how we handle and
do bounce buffering in the block layer.
- A blk-mq debugfs series from Bart, further improving on the support we
have for exporting internal information to aid debugging IO hangs or
stalls.
- Also from Bart, a series that cleans up the request initialization
differences across types of devices.
- A series from Goldwyn Rodrigues, allowing the block layer to return
failure if we will block and the user asked for non-blocking.
- Patch from Hannes for supporting setting loop devices block size to
that of the underlying device.
- Two series of patches from Javier, fixing various issues with
lightnvm, particular around pblk.
- A series from me, adding support for write hints. This comes with NVMe
support as well, so applications can help guide data placement on
flash to improve performance, latencies, and write amplification.
- A series from Ming, improving and hardening blk-mq support for
stopping/starting and quiescing hardware queues.
- Two pull requests for NVMe updates. Nothing major on the feature side,
but lots of cleanups and bug fixes. From the usual crew.
- A series from Neil Brown, greatly improving the bio rescue set
support. Most notably, this kills the bio rescue work queues, if we
don't really need them.
- Lots of other little bug fixes that are all over the place.
Please pull!
git://git.kernel.dk/linux-block.git for-4.13/block
----------------------------------------------------------------
Arnav Dawn (1):
nvme.h: add dword 12 - 15 fields to struct nvme_features
Arnd Bergmann (1):
loop: fix error handling regression
Arvind Yadav (1):
block: swim3: make of_device_ids const.
Bart Van Assche (27):
blk-mq-debugfs: Show atomic request flags
blk-mq-debugfs: Show requeue list
blk-mq-debugfs: Show busy requests
blk-mq-debugfs: Add 'kick' operation
block: Introduce queue flag QUEUE_FLAG_SCSI_PASSTHROUGH
bsg: Check queue type before attaching to a queue
pktcdvd: Check queue type before attaching to a queue
cdrom: Check SCSI passthrough support before reading audio
nfsd: Check queue type before submitting a SCSI request
nvmet-fc: Remove a set-but-not-used variable
block: Dedicated error code fixups
blk-mq: Reduce blk_mq_hw_ctx size
block: Make request operation type argument declarations consistent
block: Introduce request_queue.initialize_rq_fn()
block: Make most scsi_req_init() calls implicit
block: Change argument type of scsi_req_init()
blk-mq: Initialize .rq_flags in blk_mq_rq_ctx_init()
block: Add a comment above queue_lockdep_assert_held()
block: Check locking assumptions at runtime
block: Document what queue type each function is intended for
blk-mq: Document locking assumptions
block: Constify disk_type
blk-mq: Warn when attempting to run a hardware queue that is not mapped
block: Add fallthrough markers to switch statements
block: Declare local symbols static
block: Fix off-by-one errors in blk_status_to_errno() and print_req_error()
blk-mq: Make it safe to quiesce and unquiesce from an interrupt handler
Christoph Hellwig (52):
nvme-lightnvm: use blk_execute_rq in nvme_nvm_submit_user_cmd
scsi/osd: don't save block errors into req_results
gfs2: remove the unused sd_log_error field
dm: fix REQ_RAHEAD handling
fs: remove the unused error argument to dio_end_io()
fs: simplify dio_bio_complete
block_dev: propagate bio_iov_iter_get_pages error in __blkdev_direct_IO
dm mpath: merge do_end_io_bio into multipath_end_io_bio
dm: don't return errnos from ->map
dm: change ->end_io calling convention
block: introduce new block status code type
blk-mq: switch ->queue_rq return value to blk_status_t
block: switch bios to blk_status_t
nvme-rdma: fix merge error
Merge branch 'uuid-types' of bombadil.infradead.org:public_git/uuid into nvme-base
nvme.h: add struct nvme_host_mem_buf_desc and HMB flags
nvme: save hmpre and hmmin in struct nvme_ctrl
nvme-pci: implement host memory buffer support
nvme: mark shutdown_timeout static
nvme: move protection information check into nvme_setup_rw
nvme-rdma: merge init_request and exit_request methods
nvme-fc: merge init_request methods
nvme-loop: merge init_request methods
nvme-pci: merge init_request methods
nvme: move reset workqueue handling to common code
nvme: no need to wait for the reset when keepalive fails
blk-mq: mark blk_mq_rq_ctx_init static
blk-mq: move blk_mq_sched_{get,put}_request to blk-mq.c
blk-mq: remove blk_mq_sched_{get,put}_rq_priv
blk-mq-sched: unify request finished methods
blk-mq: simplify blk_mq_free_request
blk-mq: streamline blk_mq_get_request
bfq-iosched: fix NULL ioc check in bfq_get_rq_private
blk-mq: refactor blk_mq_sched_assign_ioc
blk-mq-sched: unify request prepare methods
blk-mq: remove __blk_mq_alloc_request
block: remove the unused bio_to_phys macro
block: stop using bio_data() in blk_write_same_mergeable
pktcdvd: remove the call to blk_queue_bounce
blk-map: call blk_queue_bounce from blk_rq_append_bio
block: move bounce declarations to block/blk.h
block: remove the queue_bounce_pfn helper
block: don't bother with bounce limits for make_request drivers
blk-mq: don't bounce by default
block: don't set bounce limit in blk_init_allocated_queue
block: don't set bounce limit in blk_init_queue
dm: don't set bounce limit
mmc/block: remove a call to blk_queue_bounce_limit
nvme: remove a misleading comment on struct nvme_ns
nvme: read the subsystem NQN from Identify Controller
nvme: simplify nvme_dev_attrs_are_visible
nvme-fabrics: verify that a controller returns the correct NQN
Dan Carpenter (3):
dm: missing break in process_queued_bios()
nvme-rdma: fix error code in nvme_rdma_create_ctrl()
btrfs: use new block error code
Goldwyn Rodrigues (10):
fs: Separate out kiocb flags setup based on RWF_* flags
fs: Introduce filemap_range_has_page()
fs: Use RWF_* flags for AIO operations
fs: Introduce RWF_NOWAIT and FMODE_AIO_NOWAIT
fs: return if direct I/O will trigger writeback
fs: Introduce IOMAP_NOWAIT
block: return on congested block device
ext4: nowait aio support
xfs: nowait aio support
btrfs: nowait aio support
Guan Junxiong (2):
nvme: add fields into identify controller data structure
nvmf: keep track of nvmet connect error status
Hannes Reinecke (2):
loop: Remove unused 'bdev' argument from loop_set_capacity
loop: support 4k physical blocksize
James Smart (5):
nvme_fc: fix double calls to nvme_cleanup_cmd()
nvme_fc: replace ioabort msleep loop with completion
nvme_fc: Fix crash when nvme controller connection fails.
nvmet_fc: fix crashes on bad opcodes
nvme_fc: fix error recovery on link down.
Javier González (30):
lightnvm: re-convert ppa format on I/O failure
lightnvm: propagate right error code to target
lightnvm: pblk: spare double cpu_to_le64 calc.
lightnvm: pblk: add debug stat for read cache hits
lightnvm: pblk: expose max sec per write on sysfs
lightnvm: pblk: generalize erase path
lightnvm: pblk: rename read request pool
lightnvm: pblk: sched. metadata on write thread
lightnvm: pblk: delete redundant debug line stat
lightnvm: pblk: delete redundant buffer pointer
lightnvm: pblk: issue multiplane reads if possible
lightnvm: pblk: simplify meta. memory allocation
lightnvm: pblk: decouple bad block from line alloc
lightnvm: pblk: choose optimal victim GC line
lightnvm: pblk: set metadata list for all I/Os
lightnvm: pblk: cleanup unnecessary code
lightnvm: pblk: add lock assertions on helpers
lightnvm: pblk: redesign GC algorithm
lightnvm: pblk: set mempool and workqueue params.
lightnvm: pblk: fail gracefully on irrec. error
lightnvm: pblk: fix bad le64 assignations
lightnvm: pblk: fix double-free on pblk init
lightnvm: pblk: remove unused return variable
lightnvm: pblk: schedule if data is not ready
lightnvm: pblk: use right metadata buffer for recovery
lightnvm: pblk: use vmalloc for GC data buffer
lightnvm: pblk: remove target using async. I/Os
lightnvm: pblk: add initialization check
lightnvm: pblk: verify that cache read is still valid
lightnvm: pblk: set line bitmap check under debug
Jens Axboe (16):
Merge tag 'v4.12-rc5' into for-4.13/block
blk-mq: fixup type of 'ret' in __blk_mq_try_issue_directly()
Merge branch 'nvme-4.13' of git://git.infradead.org/nvme into for-4.13/block
null_blk: add support for shared tags
Merge commit '8e8320c9315c' into for-4.13/block
mtip32xx: fix up the checking for internal command failure
fs: add fcntl() interface for setting/getting write life time hints
block: add support for write hints in a bio
blk-mq: expose write hints through debugfs
fs: add O_DIRECT and aio support for sending down write life time hints
fs: add support for buffered writeback to pass down write hints
ext4: add support for passing in write hints for buffered writes
xfs: add support for passing in write hints for buffered writes
btrfs: add support for passing in write hints for buffered writes
nvme: add support for streams and directives
fs/fcntl: use copy_to/from_user() for u64 types
Johannes Thumshirn (11):
scatterlist: add sg_zero_buffer() helper
nvmet: use NVME_IDENTIFY_DATA_SIZE
nvme: introduce NVMe Namespace Identification Descriptor structures
nvme: rename uuid to nguid in nvme_ns
nvme: get list of namespace descriptors
nvme: provide UUID value to userspace
nvmet: implement namespace identify descriptor list
nvmet: add uuid field to nvme_ns and populate via configfs
nvmet: allow overriding the NVMe VS via configfs
nvme: use ctrl->device consistently for logging
nvme: add hostid token to fabric options
Josef Bacik (1):
nbd: set sk->sk_sndtimeo for our sockets
Julia Lawall (1):
drbd: Drop unnecessary static
Kai-Heng Feng (1):
nvme: explicitly disable APST on quirked devices
Keith Busch (2):
nvme-pci: Remove watchdog timer
nvme: Remove SCSI translations
Matthias Kaehlcke (1):
cfq-iosched: Delete unused function min_vdisktime()
Max Gurtovoy (1):
blk-mq: map all HWQ also in hyperthreaded system
Mike Snitzer (1):
dm: bump DM_VERSION_MINOR in response to target method error code changes
Ming Lei (12):
blk-mq: merge bio into sw queue before plugging
blk-mq: make per-sw-queue bio merge as default .bio_merge
blk-mq: move blk_mq_quiesce_queue() into include/linux/blk-mq.h
blk-mq: introduce blk_mq_quiesce_queue_nowait()
blk-mq: introduce blk_mq_unquiesce_queue
blk-mq: use the introduced blk_mq_unquiesce_queue()
blk-mq: use QUEUE_FLAG_QUIESCED to quiesce queue
blk-mq: update comments on blk_mq_quiesce_queue()
blk-mq: don't stop queue for quiescing
blk-mq: clarify dispatch may not be drained/blocked by stopping queue
Revert "blk-mq: don't use sync workqueue flushing from drivers"
nvme: host: unquiesce queue in nvme_kill_queues()
NeilBrown (14):
loop: Add PF_LESS_THROTTLE to block/loop device thread.
blk: remove bio_set arg from blk_queue_split()
blk: replace bioset_create_nobvec() with a flags arg to bioset_create()
blk: make the bioset rescue_workqueue optional.
blk: use non-rescuing bioset for q->bio_split.
block: Improvements to bounce-buffer handling
rbd: use bio_clone_fast() instead of bio_clone()
drbd: use bio_clone_fast() instead of bio_clone()
pktcdvd: use bio_clone_fast() instead of bio_clone()
lightnvm/pblk-read: use bio_clone_fast()
xen-blkfront: remove bio splitting.
bcache: use kmalloc to allocate bio in bch_data_verify()
block: remove bio_clone() and all references.
block: don't check for BIO_MAX_PAGES in blk_bio_segment_split()
Paolo Valente (1):
block, bfq: update wr_busy_queues if needed on a queue split
Rakesh Pandit (1):
lightnvm: if LUNs are already allocated fix return
Sagi Grimberg (19):
nvme-loop: get rid of unused controller lock
nvme-rdma: get rid of unused ctrl lock
nvme-rdma: Make queue flags bit numbers and not shifts
nvme-rdma: Don't rearm the CQ when polling directly
nvme-rdma: make nvme_rdma_[create|destroy]_queue_ib symmetrical
nvme-rdma: rework rdma connection establishment error path
nvme-rdma: Get rid of CONNECTED state
nvme: Don't allow to reset a reconnecting controller
nvme: Move transports to use nvme-core workqueue
nvme: queue ns scanning and async request from nvme_wq
nvme: move nr_reconnects to nvme_ctrl
nvme-pci: remove redundant includes
nvme: don't hard code size of struct t10_pi_tuple
nvme-pci: Introduce nvme_ring_cq_doorbell
nvme-pci: factor out cqe handling into a dedicated routine
nvme-pci: factor out the cqe reading mechanics from __nvme_process_cq
nvme-pci: open-code polling logic in nvme_poll
nvme: use a single NVME_AQ_DEPTH and relax it to 32
nvmet-rdma: register ib_client to not deadlock in device removal
Scott Bauer (1):
nvme: implement NS Optimal IO Boundary from 1.3 Spec
Shaun McDowell (1):
nbd: add FUA op support
Valentin Rothberg (1):
nvme: Makefile: remove dead build rule
Xu Yu (1):
nvme-pci: remap BAR0 to cover admin CQ doorbell for large stride
weiping (1):
blk-mq: remove double set queue_num
Documentation/block/biodoc.txt | 2 +-
arch/s390/include/asm/eadm.h | 6 +-
arch/um/drivers/ubd_kern.c | 2 +-
block/badblocks.c | 1 +
block/bfq-iosched.c | 59 +-
block/bio-integrity.c | 8 +-
block/bio.c | 85 +-
block/blk-core.c | 331 +++--
block/blk-exec.c | 4 +-
block/blk-flush.c | 16 +-
block/blk-integrity.c | 4 +-
block/blk-map.c | 7 +-
block/blk-merge.c | 48 +-
block/blk-mq-cpumap.c | 68 +-
block/blk-mq-debugfs.c | 101 +-
block/blk-mq-sched.c | 158 +--
block/blk-mq-sched.h | 28 +-
block/blk-mq.c | 399 +++---
block/blk-mq.h | 11 -
block/blk-settings.c | 5 -
block/blk-tag.c | 15 +-
block/blk-timeout.c | 4 +-
block/blk.h | 15 +
block/bounce.c | 47 +-
block/bsg-lib.c | 5 +-
block/bsg.c | 13 +-
block/cfq-iosched.c | 9 -
block/elevator.c | 1 +
block/genhd.c | 4 +-
block/ioprio.c | 3 +-
block/kyber-iosched.c | 31 +-
block/scsi_ioctl.c | 13 +-
block/t10-pi.c | 32 +-
drivers/block/DAC960.c | 2 +-
drivers/block/amiflop.c | 10 +-
drivers/block/aoe/aoeblk.c | 1 +
drivers/block/aoe/aoecmd.c | 12 +-
drivers/block/aoe/aoedev.c | 2 +-
drivers/block/ataflop.c | 16 +-
drivers/block/brd.c | 1 -
drivers/block/cciss.c | 4 +-
drivers/block/drbd/drbd_actlog.c | 2 +-
drivers/block/drbd/drbd_bitmap.c | 6 +-
drivers/block/drbd/drbd_int.h | 5 +-
drivers/block/drbd/drbd_main.c | 14 +-
drivers/block/drbd/drbd_nl.c | 2 +-
drivers/block/drbd/drbd_receiver.c | 6 +-
drivers/block/drbd/drbd_req.c | 8 +-
drivers/block/drbd/drbd_req.h | 2 +-
drivers/block/drbd/drbd_worker.c | 16 +-
drivers/block/floppy.c | 9 +-
drivers/block/loop.c | 64 +-
drivers/block/loop.h | 1 +
drivers/block/mtip32xx/mtip32xx.c | 54 +-
drivers/block/mtip32xx/mtip32xx.h | 2 +-
drivers/block/nbd.c | 44 +-
drivers/block/null_blk.c | 125 +-
drivers/block/paride/pcd.c | 9 +-
drivers/block/paride/pd.c | 3 +-
drivers/block/paride/pf.c | 19 +-
drivers/block/pktcdvd.c | 40 +-
drivers/block/ps3disk.c | 11 +-
drivers/block/ps3vram.c | 16 +-
drivers/block/rbd.c | 28 +-
drivers/block/rsxx/dev.c | 17 +-
drivers/block/rsxx/dma.c | 13 +-
drivers/block/rsxx/rsxx_priv.h | 2 +-
drivers/block/skd_main.c | 32 +-
drivers/block/sunvdc.c | 4 +-
drivers/block/swim.c | 8 +-
drivers/block/swim3.c | 29 +-
drivers/block/sx8.c | 20 +-
drivers/block/umem.c | 4 +-
drivers/block/virtio_blk.c | 23 +-
drivers/block/xen-blkback/blkback.c | 19 +-
drivers/block/xen-blkfront.c | 81 +-
drivers/block/xsysace.c | 9 +-
drivers/block/z2ram.c | 4 +-
drivers/cdrom/cdrom.c | 7 +-
drivers/cdrom/gdrom.c | 10 +-
drivers/ide/ide-atapi.c | 12 +-
drivers/ide/ide-cd.c | 11 +-
drivers/ide/ide-cd_ioctl.c | 1 -
drivers/ide/ide-devsets.c | 1 -
drivers/ide/ide-disk.c | 1 -
drivers/ide/ide-dma.c | 2 +-
drivers/ide/ide-eh.c | 16 +-
drivers/ide/ide-floppy.c | 6 +-
drivers/ide/ide-io.c | 10 +-
drivers/ide/ide-ioctls.c | 2 -
drivers/ide/ide-park.c | 2 -
drivers/ide/ide-pm.c | 8 +-
drivers/ide/ide-probe.c | 7 +-
drivers/ide/ide-tape.c | 3 +-
drivers/ide/ide-taskfile.c | 7 +-
drivers/ide/siimage.c | 6 +-
drivers/lightnvm/core.c | 13 +-
drivers/lightnvm/pblk-cache.c | 8 +-
drivers/lightnvm/pblk-core.c | 617 ++++++---
drivers/lightnvm/pblk-gc.c | 475 ++++---
drivers/lightnvm/pblk-init.c | 389 ++++--
drivers/lightnvm/pblk-map.c | 75 +-
drivers/lightnvm/pblk-rb.c | 106 +-
drivers/lightnvm/pblk-read.c | 93 +-
drivers/lightnvm/pblk-recovery.c | 275 ++--
drivers/lightnvm/pblk-rl.c | 90 +-
drivers/lightnvm/pblk-sysfs.c | 94 +-
drivers/lightnvm/pblk-write.c | 353 +++--
drivers/lightnvm/pblk.h | 296 +++--
drivers/lightnvm/rrpc.c | 10 +-
drivers/md/bcache/bcache.h | 7 +-
drivers/md/bcache/btree.c | 6 +-
drivers/md/bcache/debug.c | 2 +-
drivers/md/bcache/io.c | 6 +-
drivers/md/bcache/journal.c | 2 +-
drivers/md/bcache/movinggc.c | 10 +-
drivers/md/bcache/request.c | 28 +-
drivers/md/bcache/request.h | 2 +-
drivers/md/bcache/super.c | 14 +-
drivers/md/bcache/writeback.c | 4 +-
drivers/md/dm-bio-prison-v1.c | 4 +-
drivers/md/dm-bio-prison-v1.h | 2 +-
drivers/md/dm-bufio.c | 28 +-
drivers/md/dm-cache-target.c | 36 +-
drivers/md/dm-crypt.c | 41 +-
drivers/md/dm-flakey.c | 13 +-
drivers/md/dm-integrity.c | 30 +-
drivers/md/dm-io.c | 13 +-
drivers/md/dm-log-writes.c | 13 +-
drivers/md/dm-mpath.c | 85 +-
drivers/md/dm-raid1.c | 29 +-
drivers/md/dm-rq.c | 30 +-
drivers/md/dm-rq.h | 2 +-
drivers/md/dm-snap.c | 15 +-
drivers/md/dm-stripe.c | 17 +-
drivers/md/dm-target.c | 2 +-
drivers/md/dm-thin.c | 67 +-
drivers/md/dm-verity-target.c | 16 +-
drivers/md/dm-zero.c | 4 +-
drivers/md/dm.c | 88 +-
drivers/md/md.c | 14 +-
drivers/md/multipath.c | 10 +-
drivers/md/raid1.c | 38 +-
drivers/md/raid10.c | 38 +-
drivers/md/raid5-cache.c | 6 +-
drivers/md/raid5-ppl.c | 4 +-
drivers/md/raid5.c | 24 +-
drivers/memstick/core/ms_block.c | 7 +-
drivers/memstick/core/mspro_block.c | 8 +-
drivers/mmc/core/block.c | 37 +-
drivers/mmc/core/queue.c | 3 +-
drivers/mtd/mtd_blkdevs.c | 31 +-
drivers/mtd/ubi/block.c | 8 +-
drivers/nvdimm/blk.c | 5 +-
drivers/nvdimm/btt.c | 5 +-
drivers/nvdimm/pmem.c | 29 +-
drivers/nvme/host/Kconfig | 12 -
drivers/nvme/host/Makefile | 1 -
drivers/nvme/host/core.c | 525 ++++++--
drivers/nvme/host/fabrics.c | 69 +-
drivers/nvme/host/fabrics.h | 4 +-
drivers/nvme/host/fc.c | 137 +-
drivers/nvme/host/lightnvm.c | 18 +-
drivers/nvme/host/nvme.h | 42 +-
drivers/nvme/host/pci.c | 647 +++++----
drivers/nvme/host/rdma.c | 212 ++-
drivers/nvme/host/scsi.c | 2460 -----------------------------------
drivers/nvme/target/admin-cmd.c | 65 +-
drivers/nvme/target/configfs.c | 68 +
drivers/nvme/target/core.c | 3 +-
drivers/nvme/target/discovery.c | 4 +-
drivers/nvme/target/fc.c | 10 +-
drivers/nvme/target/fcloop.c | 2 -
drivers/nvme/target/io-cmd.c | 4 +-
drivers/nvme/target/loop.c | 67 +-
drivers/nvme/target/nvmet.h | 1 +
drivers/nvme/target/rdma.c | 102 +-
drivers/s390/block/dasd.c | 36 +-
drivers/s390/block/dcssblk.c | 2 +-
drivers/s390/block/scm_blk.c | 8 +-
drivers/s390/block/scm_blk.h | 4 +-
drivers/s390/block/xpram.c | 2 +-
drivers/s390/cio/eadm_sch.c | 6 +-
drivers/s390/cio/scm.c | 2 +-
drivers/sbus/char/jsflash.c | 5 +-
drivers/scsi/osd/osd_initiator.c | 29 +-
drivers/scsi/osst.c | 3 +-
drivers/scsi/scsi_error.c | 3 +-
drivers/scsi/scsi_lib.c | 104 +-
drivers/scsi/scsi_transport_sas.c | 10 +-
drivers/scsi/sg.c | 8 +-
drivers/scsi/st.c | 3 +-
drivers/target/target_core_iblock.c | 12 +-
drivers/target/target_core_pscsi.c | 6 +-
fs/aio.c | 15 +-
fs/block_dev.c | 23 +-
fs/btrfs/btrfs_inode.h | 3 +-
fs/btrfs/check-integrity.c | 4 +-
fs/btrfs/compression.c | 46 +-
fs/btrfs/compression.h | 4 +-
fs/btrfs/ctree.h | 6 +-
fs/btrfs/disk-io.c | 75 +-
fs/btrfs/disk-io.h | 12 +-
fs/btrfs/extent_io.c | 27 +-
fs/btrfs/extent_io.h | 6 +-
fs/btrfs/file-item.c | 14 +-
fs/btrfs/file.c | 33 +-
fs/btrfs/inode.c | 82 +-
fs/btrfs/raid56.c | 16 +-
fs/btrfs/scrub.c | 26 +-
fs/btrfs/volumes.c | 11 +-
fs/buffer.c | 15 +-
fs/crypto/bio.c | 2 +-
fs/direct-io.c | 25 +-
fs/ext4/file.c | 35 +-
fs/ext4/page-io.c | 15 +-
fs/ext4/readpage.c | 4 +-
fs/f2fs/data.c | 10 +-
fs/f2fs/segment.c | 2 +-
fs/fcntl.c | 67 +
fs/gfs2/incore.h | 1 -
fs/gfs2/lops.c | 10 +-
fs/gfs2/meta_io.c | 2 +-
fs/gfs2/ops_fstype.c | 4 +-
fs/inode.c | 1 +
fs/iomap.c | 13 +-
fs/jfs/jfs_logmgr.c | 2 +-
fs/jfs/jfs_metapage.c | 4 +-
fs/mpage.c | 4 +-
fs/nfs/blocklayout/blocklayout.c | 4 +-
fs/nfsd/blocklayout.c | 4 +-
fs/nilfs2/segbuf.c | 2 +-
fs/ocfs2/cluster/heartbeat.c | 6 +-
fs/open.c | 1 +
fs/read_write.c | 12 +-
fs/xfs/xfs_aops.c | 9 +-
fs/xfs/xfs_buf.c | 7 +-
fs/xfs/xfs_file.c | 32 +-
fs/xfs/xfs_iomap.c | 22 +
fs/xfs/xfs_super.c | 3 +-
include/linux/bio.h | 21 +-
include/linux/blk-mq.h | 28 +-
include/linux/blk_types.h | 26 +-
include/linux/blkdev.h | 72 +-
include/linux/device-mapper.h | 4 +-
include/linux/elevator.h | 7 +-
include/linux/fs.h | 74 +-
include/linux/ide.h | 6 +-
include/linux/iomap.h | 1 +
include/linux/nvme.h | 102 +-
include/linux/scatterlist.h | 2 +
include/scsi/osd_initiator.h | 2 +-
include/scsi/scsi_cmnd.h | 1 +
include/scsi/scsi_request.h | 2 +-
include/uapi/linux/aio_abi.h | 2 +-
include/uapi/linux/dm-ioctl.h | 4 +-
include/uapi/linux/fcntl.h | 21 +
include/uapi/linux/fs.h | 4 +
include/uapi/linux/loop.h | 3 +
include/uapi/linux/nbd.h | 4 +
kernel/power/swap.c | 14 +-
kernel/trace/blktrace.c | 4 +-
lib/scatterlist.c | 35 +
mm/filemap.c | 64 +-
mm/page_io.c | 4 +-
265 files changed, 5911 insertions(+), 6236 deletions(-)
And here's the merge:
commit 166a00988549e9a5dfb341e2453385fca102b57d
Merge: 4d8a991d460d a2b93775002b
Author: Jens Axboe <axboe@kernel.dk>
Date: Thu Jun 29 18:09:58 2017 -0600
Merge branch 'for-4.13/block' into for-4.13/merge
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --cc drivers/md/dm-io.c
index 8d5ca30f6551,81248a8a8b57..25039607f3cb
--- a/drivers/md/dm-io.c
+++ b/drivers/md/dm-io.c
@@@ -317,9 -318,9 +318,9 @@@ static void do_region(int op, int op_fl
else if (op == REQ_OP_WRITE_SAME)
special_cmd_max_sectors = q->limits.max_write_same_sectors;
if ((op == REQ_OP_DISCARD || op == REQ_OP_WRITE_ZEROES ||
- op == REQ_OP_WRITE_SAME) &&
- special_cmd_max_sectors == 0) {
+ op == REQ_OP_WRITE_SAME) && special_cmd_max_sectors == 0) {
+ atomic_inc(&io->count);
- dec_count(io, region, -EOPNOTSUPP);
+ dec_count(io, region, BLK_STS_NOTSUPP);
return;
}
diff --cc drivers/md/dm-raid1.c
index 4da8858856fb,3ab584b686e0..f30d8e8e9bbf
--- a/drivers/md/dm-raid1.c
+++ b/drivers/md/dm-raid1.c
@@@ -1255,26 -1253,16 +1256,26 @@@ static int mirror_end_io(struct dm_targ
if (!(bio->bi_opf & REQ_PREFLUSH) &&
bio_op(bio) != REQ_OP_DISCARD)
dm_rh_dec(ms->rh, bio_record->write_region);
- return error;
+ return DM_ENDIO_DONE;
}
- if (error == -EOPNOTSUPP)
+ if (*error == BLK_STS_NOTSUPP)
- return DM_ENDIO_DONE;
+ goto out;
- if ((error == -EWOULDBLOCK) && (bio->bi_opf & REQ_RAHEAD))
+ if (bio->bi_opf & REQ_RAHEAD)
- return DM_ENDIO_DONE;
+ goto out;
- if (unlikely(error)) {
+ if (unlikely(*error)) {
+ if (!bio_record->details.bi_bdev) {
+ /*
+ * There wasn't enough memory to record necessary
+ * information for a retry or there was no other
+ * mirror in-sync.
+ */
+ DMERR_LIMIT("Mirror read failed.");
- return -EIO;
++ goto out;
+ }
+
m = bio_record->m;
DMERR("Mirror read failed from %s. Trying alternative device.",
@@@ -1290,8 -1278,7 +1291,8 @@@
bd = &bio_record->details;
dm_bio_restore(bd, bio);
+ bio_record->details.bi_bdev = NULL;
- bio->bi_error = 0;
+ bio->bi_status = 0;
queue_bio(ms, bio, rw);
return DM_ENDIO_INCOMPLETE;
@@@ -1299,10 -1286,7 +1300,10 @@@
DMERR("All replicated volumes dead, failing I/O");
}
+out:
+ bio_record->details.bi_bdev = NULL;
+
- return error;
+ return DM_ENDIO_DONE;
}
static void mirror_presuspend(struct dm_target *ti)
diff --cc fs/block_dev.c
index 0a7404ef9335,2c5f08696fff..a7df151f8aba
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@@ -262,11 -263,8 +263,11 @@@ __blkdev_direct_IO_simple(struct kiocb
if (vecs != inline_vecs)
kfree(vecs);
- if (unlikely(bio.bi_error))
- ret = bio.bi_error;
+ if (unlikely(bio.bi_status))
- return blk_status_to_errno(bio.bi_status);
++ ret = blk_status_to_errno(bio.bi_status);
+
+ bio_uninit(&bio);
+
return ret;
}
--
Jens Axboe
next reply other threads:[~2017-07-02 23:44 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-02 23:44 Jens Axboe [this message]
2017-07-03 17:49 ` [GIT PULL] Core block/IO changes for 4.13-rc Linus Torvalds
2017-07-03 19:04 ` 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=c2565c20-527f-72fb-dc5c-bb81f56220f9@kernel.dk \
--to=axboe@kernel.dk \
--cc=linux-block@vger.kernel.org \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).