26 Oct, 2020

1 commit


23 Oct, 2020

1 commit


16 Oct, 2020

1 commit


09 Oct, 2020

3 commits

  • Prior to commit 9fe55eea7e4b ("Fix race when checking i_size on direct
    i/o read"), an unaligned direct read past end of file would trigger EOF,
    since generic_file_aio_read detected this read-at-EOF condition and
    skipped the direct IO read entirely, returning 0. After that change, the
    read now reaches dio_generic, which detects the misalignment and returns
    EINVAL.

    This consolidates the generic direct-io to follow the same behavior of
    filesystems. Apparently, this fix will only affect ocfs2 since other
    filesystems do this verification before calling do_blockdev_direct_IO,
    with the exception of f2fs, which has the same bug, but is fixed in the
    next patch.

    it can be verified by a read loop on a file that does a partial read
    before EOF (On file that doesn't end at an aligned address). The
    following code fails on an unaligned file on filesystems without
    prior validation without this patch, but not on btrfs, ext4, and xfs.

    while (done < total) {
    ssize_t delta = pread(fd, buf + done, total - done, off + done);
    if (!delta)
    break;
    ...
    }

    Fix this regression by moving the misalignment check to after the EOF
    check added by commit 74cedf9b6c60 ("direct-io: Fix negative return from
    dio read beyond eof").

    Based on a patch by Jamie Liu.

    Link: https://lore.kernel.org/r/20201008062620.2928326-4-krisman@collabora.com
    Reported-by: Jamie Liu
    Reviewed-by: Jan Kara
    Reviewed-by: Jens Axboe
    Signed-off-by: Gabriel Krisman Bertazi
    Signed-off-by: Jan Kara

    Gabriel Krisman Bertazi
     
  • If a DIO read starts past EOF, the kernel won't attempt it, so we don't
    need to flush dirty pages before failing the syscall.

    Link: https://lore.kernel.org/r/20201008062620.2928326-3-krisman@collabora.com
    Suggested-by: Jan Kara
    Reviewed-by: Jan Kara
    Reviewed-by: Jens Axboe
    Signed-off-by: Gabriel Krisman Bertazi
    Signed-off-by: Jan Kara

    Gabriel Krisman Bertazi
     
  • In preparation to resort DIO checks, reduce code duplication of error
    handling in do_blockdev_direct_IO.

    Link: https://lore.kernel.org/r/20201008062620.2928326-2-krisman@collabora.com
    Reviewed-by: Jan Kara
    Reviewed-by: Jens Axboe
    Signed-off-by: Gabriel Krisman Bertazi
    Signed-off-by: Jan Kara

    Gabriel Krisman Bertazi
     

07 Oct, 2020

1 commit

  • Since we removed the last user of dio_end_io() when btrfs got converted
    to iomap infrastructure ("btrfs: switch to iomap for direct IO"), remove
    the helper function dio_end_io().

    Reviewed-by: Nikolay Borisov
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Josef Bacik
    Signed-off-by: Goldwyn Rodrigues
    Reviewed-by: David Sterba
    Signed-off-by: David Sterba

    Goldwyn Rodrigues
     

07 Aug, 2020

1 commit


01 Jul, 2020

1 commit


25 Jun, 2020

1 commit


20 Jun, 2020

1 commit


18 Jun, 2020

1 commit


15 Jun, 2020

1 commit

  • Pull btrfs updates from David Sterba:
    "This reverts the direct io port to iomap infrastructure of btrfs
    merged in the first pull request. We found problems in invalidate page
    that don't seem to be fixable as regressions or without changing iomap
    code that would not affect other filesystems.

    There are four reverts in total, but three of them are followup
    cleanups needed to revert a43a67a2d715 cleanly. The result is the
    buffer head based implementation of direct io.

    Reverts are not great, but under current circumstances I don't see
    better options"

    * tag 'for-5.8-part2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
    Revert "btrfs: switch to iomap_dio_rw() for dio"
    Revert "fs: remove dio_end_io()"
    Revert "btrfs: remove BTRFS_INODE_READDIO_NEED_LOCK"
    Revert "btrfs: split btrfs_direct_IO to read and write part"

    Linus Torvalds
     

10 Jun, 2020

1 commit


03 Jun, 2020

1 commit

  • Pull btrfs updates from David Sterba:
    "Highlights:

    - speedup dead root detection during orphan cleanup, eg. when there
    are many deleted subvolumes waiting to be cleaned, the trees are
    now looked up in radix tree instead of a O(N^2) search

    - snapshot creation with inherited qgroup will mark the qgroup
    inconsistent, requires a rescan

    - send will emit file capabilities after chown, this produces a
    stream that does not need postprocessing to set the capabilities
    again

    - direct io ported to iomap infrastructure, cleaned up and simplified
    code, notably removing last use of struct buffer_head in btrfs code

    Core changes:

    - factor out backreference iteration, to be used by ordinary
    backreferences and relocation code

    - improved global block reserve utilization
    * better logic to serialize requests
    * increased maximum available for unlink
    * improved handling on large pages (64K)

    - direct io cleanups and fixes
    * simplify layering, where cloned bios were unnecessarily created
    for some cases
    * error handling fixes (submit, endio)
    * remove repair worker thread, used to avoid deadlocks during
    repair

    - refactored block group reading code, preparatory work for new type
    of block group storage that should improve mount time on large
    filesystems

    Cleanups:

    - cleaned up (and slightly sped up) set/get helpers for metadata data
    structure members

    - root bit REF_COWS got renamed to SHAREABLE to reflect the that the
    blocks of the tree get shared either among subvolumes or with the
    relocation trees

    Fixes:

    - when subvolume deletion fails due to ENOSPC, the filesystem is not
    turned read-only

    - device scan deals with devices from other filesystems that changed
    ownership due to overwrite (mkfs)

    - fix a race between scrub and block group removal/allocation

    - fix long standing bug of a runaway balance operation, printing the
    same line to the syslog, caused by a stale status bit on a reloc
    tree that prevented progress

    - fix corrupt log due to concurrent fsync of inodes with shared
    extents

    - fix space underflow for NODATACOW and buffered writes when it for
    some reason needs to fallback to COW mode"

    * tag 'for-5.8-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (133 commits)
    btrfs: fix space_info bytes_may_use underflow during space cache writeout
    btrfs: fix space_info bytes_may_use underflow after nocow buffered write
    btrfs: fix wrong file range cleanup after an error filling dealloc range
    btrfs: remove redundant local variable in read_block_for_search
    btrfs: open code key_search
    btrfs: split btrfs_direct_IO to read and write part
    btrfs: remove BTRFS_INODE_READDIO_NEED_LOCK
    fs: remove dio_end_io()
    btrfs: switch to iomap_dio_rw() for dio
    iomap: remove lockdep_assert_held()
    iomap: add a filesystem hook for direct I/O bio submission
    fs: export generic_file_buffered_read()
    btrfs: turn space cache writeout failure messages into debug messages
    btrfs: include error on messages about failure to write space/inode caches
    btrfs: remove useless 'fail_unlock' label from btrfs_csum_file_blocks()
    btrfs: do not ignore error from btrfs_next_leaf() when inserting checksums
    btrfs: make checksum item extension more efficient
    btrfs: fix corrupt log due to concurrent fsync of inodes with shared extents
    btrfs: unexport btrfs_compress_set_level()
    btrfs: simplify iget helpers
    ...

    Linus Torvalds
     

28 May, 2020

1 commit

  • Since we removed the last user of dio_end_io(), remove the helper
    function dio_end_io().

    Reviewed-by: Nikolay Borisov
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Goldwyn Rodrigues
    Reviewed-by: David Sterba
    Signed-off-by: David Sterba

    Goldwyn Rodrigues
     

22 May, 2020

1 commit

  • With the existing fscrypt IV generation methods, each file's data blocks
    have contiguous DUNs. Therefore the direct I/O code "just worked"
    because it only submits logically contiguous bios. But with
    IV_INO_LBLK_32, the direct I/O code breaks because the DUN can wrap from
    0xffffffff to 0. We can't submit bios across such boundaries.

    This is especially difficult to handle when block_size != PAGE_SIZE,
    since in that case the DUN can wrap in the middle of a page. Punt on
    this case for now and just handle block_size == PAGE_SIZE.

    Add and use a new function fscrypt_dio_supported() to check whether a
    direct I/O request is unsupported due to encryption constraints.

    Then, update fs/direct-io.c (used by f2fs, and by ext4 in kernel v5.4
    and earlier) and fs/iomap/direct-io.c (used by ext4 in kernel v5.5 and
    later) to avoid submitting I/O across a DUN discontinuity.

    (This is needed in ACK now because ACK already supports direct I/O with
    inline crypto. I'll be sending this upstream along with the encrypted
    direct I/O support itself once its prerequisites are closer to landing.)

    Test: For now, just manually tested direct I/O on ext4 and f2fs in the
    DUN discontinuity case.
    Bug: 144046242
    Change-Id: I0c0b0b20a73ade35c3660cc6f9c09d49d3853ba5
    Signed-off-by: Eric Biggers

    Eric Biggers
     

13 May, 2020

1 commit

  • Sync dio could be big, or may take long time in discard or in case of
    IO failure.

    We have prevented task hung in submit_bio_wait() and blk_execute_rq(),
    so apply the same trick for prevent task hung from happening in sync dio.

    Add helper of blk_io_schedule() and use io_schedule_timeout() to prevent
    task hung warning.

    Signed-off-by: Ming Lei
    Reviewed-by: Bart Van Assche
    Cc: Salman Qazi
    Cc: Jesse Barnes
    Cc: Christoph Hellwig
    Cc: Bart Van Assche
    Cc: Hannes Reinecke
    Signed-off-by: Jens Axboe

    Ming Lei
     

25 Jan, 2020

1 commit

  • ext4 and f2fs have traditionally not supported direct I/O on encrypted
    files, since it's difficult to implement with the traditional
    filesystem-layer encryption. But when inline encryption is used
    instead, it's straightforward to support direct I/O, as long as the I/O
    is fully filesystem-block-aligned. Add support for it by:

    - Making the two generic direct I/O implementations in the kernel,
    __blockdev_direct_IO() and iomap_dio_rw(), set the encryption context
    on bios for inline-encrypted files. __blockdev_direct_IO() is used by
    f2fs, and was used by ext4 in kernel v5.4 and earlier. iomap_dio_rw()
    is used by ext4 in kernel v5.5 and later.

    - Making ext4 and f2fs allow direct I/O to encrypted files (rather the
    current behavior of falling back to buffered I/O) when the file is
    using inline encryption and the I/O is fully filesystem-block-aligned.

    Bug: 137270441
    Change-Id: I4c8f7497eb8f829d03611d24281113d68c21d4d1
    Signed-off-by: Eric Biggers

    Eric Biggers
     

05 Jan, 2020

1 commit

  • Include fs/internal.h to address the following 'sparse' warning:

    fs/direct-io.c:591:5: warning: symbol 'sb_init_dio_done_wq' was not declared. Should it be static?

    Link: http://lkml.kernel.org/r/20191209234544.128302-1-ebiggers@kernel.org
    Signed-off-by: Eric Biggers
    Reviewed-by: Jan Kara
    Cc: Alexander Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Biggers
     

01 Dec, 2019

1 commit

  • This helper prints warning if direct I/O write failed to invalidate cache,
    and set EIO at inode to warn usersapce about possible data corruption.

    See also commit 5a9d929d6e13 ("iomap: report collisions between directio
    and buffered writes to userspace").

    Direct I/O is supported by non-disk filesystems, for example NFS. Thus
    generic code needs this even in kernel without CONFIG_BLOCK.

    Link: http://lkml.kernel.org/r/157270038074.4812.7980855544557488880.stgit@buzz
    Signed-off-by: Konstantin Khlebnikov
    Reviewed-by: Andrew Morton
    Reviewed-by: Jan Kara
    Cc: Jens Axboe
    Cc: Alexander Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     

15 Oct, 2019

1 commit

  • Fix kernel-doc warning in fs/direct-io.c:

    fs/direct-io.c:258: warning: Excess function parameter 'offset' description in 'dio_complete'

    Also, don't mark this function as having kernel-doc notation since it is
    not exported.

    Link: http://lkml.kernel.org/r/97908511-4328-4a56-17fe-f43a1d7aa470@infradead.org
    Fixes: 6d544bb4d901 ("dio: centralize completion in dio_complete()")
    Signed-off-by: Randy Dunlap
    Cc: Zach Brown
    Cc: Alexander Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

29 Jun, 2019

1 commit


21 May, 2019

1 commit

  • Add SPDX license identifiers to all files which:

    - Have no license information of any form

    - Have EXPORT_.*_SYMBOL_GPL inside which was used in the
    initial scan/conversion to ignore the file

    These files fall under the project license, GPL v2 only. The resulting SPDX
    license identifier is:

    GPL-2.0-only

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

30 Apr, 2019

1 commit


15 Feb, 2019

1 commit

  • This patch introduces one extra iterator variable to bio_for_each_segment_all(),
    then we can allow bio_for_each_segment_all() to iterate over multi-page bvec.

    Given it is just one mechannical & simple change on all bio_for_each_segment_all()
    users, this patch does tree-wide change in one single patch, so that we can
    avoid to use a temporary helper for this conversion.

    Reviewed-by: Omar Sandoval
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Ming Lei
    Signed-off-by: Jens Axboe

    Ming Lei
     

22 Jan, 2019

1 commit

  • On a DIO_SKIP_HOLES filesystem, the ->get_block() method is currently
    not allowed to create blocks for an empty inode. This confusion comes
    from trying to bit shift a negative number, so check the size of the
    inode first.

    The problem is most visible for hfsplus, because the fallback to
    buffered I/O doesn't happen and the write fails with EIO. This is in
    part the fault of the module, because it gives a wrong return value on
    ->get_block(); that will be fixed in a separate patch.

    Reviewed-by: Jeff Moyer
    Reviewed-by: Jan Kara
    Signed-off-by: Ernesto A. Fernández
    Signed-off-by: Jens Axboe

    Ernesto A. Fernández
     

05 Dec, 2018

1 commit

  • Pull in v4.20-rc5, solving a conflict we'll otherwise get in aio.c and
    also getting the merge fix that went into mainline that users are
    hitting testing for-4.21/block and/or for-next.

    * tag 'v4.20-rc5': (664 commits)
    Linux 4.20-rc5
    PCI: Fix incorrect value returned from pcie_get_speed_cap()
    MAINTAINERS: Update linux-mips mailing list address
    ocfs2: fix potential use after free
    mm/khugepaged: fix the xas_create_range() error path
    mm/khugepaged: collapse_shmem() do not crash on Compound
    mm/khugepaged: collapse_shmem() without freezing new_page
    mm/khugepaged: minor reorderings in collapse_shmem()
    mm/khugepaged: collapse_shmem() remember to clear holes
    mm/khugepaged: fix crashes due to misaccounted holes
    mm/khugepaged: collapse_shmem() stop if punched or truncated
    mm/huge_memory: fix lockdep complaint on 32-bit i_size_read()
    mm/huge_memory: splitting set mapping+index before unfreeze
    mm/huge_memory: rename freeze_page() to unmap_page()
    initramfs: clean old path before creating a hardlink
    kernel/kcov.c: mark funcs in __sanitizer_cov_trace_pc() as notrace
    psi: make disabling/enabling easier for vendor kernels
    proc: fixup map_files test on arm
    debugobjects: avoid recursive calls with kmemleak
    userfaultfd: shmem: UFFDIO_COPY: set the page dirty if VM_WRITE is not set
    ...

    Jens Axboe
     

30 Nov, 2018

1 commit

  • commit e259221763a40403d5bb232209998e8c45804ab8 ("fs: simplify the
    generic_write_sync prototype") reworked callers of generic_write_sync(),
    and ended up dropping the error return for the directio path. Prior to
    that commit, in dio_complete(), an error would be bubbled up the stack,
    but after that commit, errors passed on to dio_complete were eaten up.

    This was reported on the list earlier, and a fix was proposed in
    https://lore.kernel.org/lkml/20160921141539.GA17898@infradead.org/, but
    never followed up with. We recently hit this bug in our testing where
    fencing io errors, which were previously erroring out with EIO, were
    being returned as success operations after this commit.

    The fix proposed on the list earlier was a little short -- it would have
    still called generic_write_sync() in case `ret` already contained an
    error. This fix ensures generic_write_sync() is only called when there's
    no pending error in the write. Additionally, transferred is replaced
    with ret to bring this code in line with other callers.

    Fixes: e259221763a4 ("fs: simplify the generic_write_sync prototype")
    Reported-by: Ravi Nankani
    Signed-off-by: Maximilian Heyne
    Reviewed-by: Christoph Hellwig
    CC: Torsten Mehlan
    CC: Uwe Dannowski
    CC: Amit Shah
    CC: David Woodhouse
    CC: stable@vger.kernel.org
    Signed-off-by: Jens Axboe

    Maximilian Heyne
     

26 Nov, 2018

1 commit

  • blk_poll() has always kept spinning until it found an IO. This is
    fine for SYNC polling, since we need to find one request we have
    pending, but in preparation for ASYNC polling it can be beneficial
    to just check if we have any entries available or not.

    Existing callers are converted to pass in 'spin == true', to retain
    the old behavior.

    Signed-off-by: Jens Axboe

    Jens Axboe
     

08 Nov, 2018

1 commit

  • We use IOCB_HIPRI to poll for IO in the caller instead of scheduling.
    This information is not available for (or after) IO submission. The
    driver may make different queue choices based on the type of IO, so
    make the fact that we will poll for this IO known to the lower layers
    as well.

    Reviewed-by: Hannes Reinecke
    Reviewed-by: Keith Busch
    Reviewed-by: Sagi Grimberg
    Signed-off-by: Jens Axboe

    Jens Axboe
     

24 Oct, 2018

1 commit

  • Use accessor functions to access an iterator's type and direction. This
    allows for the possibility of using some other method of determining the
    type of iterator than if-chains with bitwise-AND conditions.

    Signed-off-by: David Howells

    David Howells
     

14 May, 2018

1 commit


07 Apr, 2018

1 commit

  • Merge updates from Andrew Morton:

    - a few misc things

    - ocfs2 updates

    - the v9fs maintainers have been missing for a long time. I've taken
    over v9fs patch slinging.

    - most of MM

    * emailed patches from Andrew Morton : (116 commits)
    mm,oom_reaper: check for MMF_OOM_SKIP before complaining
    mm/ksm: fix interaction with THP
    mm/memblock.c: cast constant ULLONG_MAX to phys_addr_t
    headers: untangle kmemleak.h from mm.h
    include/linux/mmdebug.h: make VM_WARN* non-rvals
    mm/page_isolation.c: make start_isolate_page_range() fail if already isolated
    mm: change return type to vm_fault_t
    mm, oom: remove 3% bonus for CAP_SYS_ADMIN processes
    mm, page_alloc: wakeup kcompactd even if kswapd cannot free more memory
    kernel/fork.c: detect early free of a live mm
    mm: make counting of list_lru_one::nr_items lockless
    mm/swap_state.c: make bool enable_vma_readahead and swap_vma_readahead() static
    block_invalidatepage(): only release page if the full page was invalidated
    mm: kernel-doc: add missing parameter descriptions
    mm/swap.c: remove @cold parameter description for release_pages()
    mm/nommu: remove description of alloc_vm_area
    zram: drop max_zpage_size and use zs_huge_class_size()
    zsmalloc: introduce zs_huge_class_size()
    mm: fix races between swapoff and flush dcache
    fs/direct-io.c: minor cleanups in do_blockdev_direct_IO
    ...

    Linus Torvalds
     

06 Apr, 2018

1 commit

  • We already get the block counts and calculate the end block at the
    beginning of the function. Let's use the local variables for
    consistency and readability. No functional changes

    [akpm@linux-foundation.org: constify the locals to prevent future slipups]
    Link: http://lkml.kernel.org/r/1519638870-17756-1-git-send-email-nborisov@suse.com
    Signed-off-by: Nikolay Borisov
    Reviewed-by: Jeff Moyer
    Cc: Al Viro
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nikolay Borisov
     

13 Mar, 2018

2 commits

  • This flag was added by fe0f07d08ee3 ("direct-io: only inc/deci
    inode->i_dio_count for file systems") as means to optimise the atomic
    modificaiton of the variable for blockdevices. However with the advent
    of 542ff7bf18c6 ("block: new direct I/O implementation") it became
    unused. So let's remove it.

    Reviewed-by: Christoph Hellwig
    Signed-off-by: Nikolay Borisov
    Signed-off-by: Jens Axboe

    Nikolay Borisov
     
  • This flag was added by 6039257378e4 ("direct-io: add flag to allow aio
    writes beyond i_size") to support XFS. However, with the rework of
    XFS' DIO's path to use iomap in acdda3aae146 ("xfs: use iomap_dio_rw")
    it became redundant. So let's remove it.

    Reviewed-by: Christoph Hellwig
    Signed-off-by: Nikolay Borisov
    Signed-off-by: Jens Axboe

    Nikolay Borisov
     

27 Feb, 2018

1 commit

  • Commit e864f39569f4 "fs: add RWF_DSYNC aand RWF_SYNC" added additional
    way for direct IO to become synchronous and thus trigger fsync from the
    IO completion handler. Then commit 9830f4be159b "fs: Use RWF_* flags for
    AIO operations" allowed these flags to be set for AIO as well. However
    that commit forgot to update the condition checking whether the IO
    completion handling should be defered to a workqueue and thus AIO DIO
    with RWF_[D]SYNC set will call fsync() from IRQ context resulting in
    sleep in atomic.

    Fix the problem by checking directly iocb flags (the same way as it is
    done in dio_complete()) instead of checking all conditions that could
    lead to IO being synchronous.

    CC: Christoph Hellwig
    CC: Goldwyn Rodrigues
    CC: stable@vger.kernel.org
    Reported-by: Mark Rutland
    Tested-by: Mark Rutland
    Fixes: 9830f4be159b29399d107bffb99e0132bc5aedd4
    Signed-off-by: Jan Kara
    Signed-off-by: Jens Axboe

    Jan Kara
     

09 Jan, 2018

1 commit

  • If two programs simultaneously try to write to the same part of a file
    via direct IO and buffered IO, there's a chance that the post-diowrite
    pagecache invalidation will fail on the dirty page. When this happens,
    the dio write succeeded, which means that the page cache is no longer
    coherent with the disk!

    Programs are not supposed to mix IO types and this is a clear case of
    data corruption, so store an EIO which will be reflected to userspace
    during the next fsync. Replace the WARN_ON with a ratelimited pr_crit
    so that the developers have /some/ kind of breadcrumb to track down the
    offending program(s) and file(s) involved.

    Signed-off-by: Darrick J. Wong
    Reviewed-by: Liu Bo

    Darrick J. Wong
     

15 Nov, 2017

1 commit

  • Pull core block layer updates from Jens Axboe:
    "This is the main pull request for block storage for 4.15-rc1.

    Nothing out of the ordinary in here, and no API changes or anything
    like that. Just various new features for drivers, core changes, etc.
    In particular, this pull request contains:

    - A patch series from Bart, closing the whole on blk/scsi-mq queue
    quescing.

    - A series from Christoph, building towards hidden gendisks (for
    multipath) and ability to move bio chains around.

    - NVMe
    - Support for native multipath for NVMe (Christoph).
    - Userspace notifications for AENs (Keith).
    - Command side-effects support (Keith).
    - SGL support (Chaitanya Kulkarni)
    - FC fixes and improvements (James Smart)
    - Lots of fixes and tweaks (Various)

    - bcache
    - New maintainer (Michael Lyle)
    - Writeback control improvements (Michael)
    - Various fixes (Coly, Elena, Eric, Liang, et al)

    - lightnvm updates, mostly centered around the pblk interface
    (Javier, Hans, and Rakesh).

    - Removal of unused bio/bvec kmap atomic interfaces (me, Christoph)

    - Writeback series that fix the much discussed hundreds of millions
    of sync-all units. This goes all the way, as discussed previously
    (me).

    - Fix for missing wakeup on writeback timer adjustments (Yafang
    Shao).

    - Fix laptop mode on blk-mq (me).

    - {mq,name} tupple lookup for IO schedulers, allowing us to have
    alias names. This means you can use 'deadline' on both !mq and on
    mq (where it's called mq-deadline). (me).

    - blktrace race fix, oopsing on sg load (me).

    - blk-mq optimizations (me).

    - Obscure waitqueue race fix for kyber (Omar).

    - NBD fixes (Josef).

    - Disable writeback throttling by default on bfq, like we do on cfq
    (Luca Miccio).

    - Series from Ming that enable us to treat flush requests on blk-mq
    like any other request. This is a really nice cleanup.

    - Series from Ming that improves merging on blk-mq with schedulers,
    getting us closer to flipping the switch on scsi-mq again.

    - BFQ updates (Paolo).

    - blk-mq atomic flags memory ordering fixes (Peter Z).

    - Loop cgroup support (Shaohua).

    - Lots of minor fixes from lots of different folks, both for core and
    driver code"

    * 'for-4.15/block' of git://git.kernel.dk/linux-block: (294 commits)
    nvme: fix visibility of "uuid" ns attribute
    blk-mq: fixup some comment typos and lengths
    ide: ide-atapi: fix compile error with defining macro DEBUG
    blk-mq: improve tag waiting setup for non-shared tags
    brd: remove unused brd_mutex
    blk-mq: only run the hardware queue if IO is pending
    block: avoid null pointer dereference on null disk
    fs: guard_bio_eod() needs to consider partitions
    xtensa/simdisk: fix compile error
    nvme: expose subsys attribute to sysfs
    nvme: create 'slaves' and 'holders' entries for hidden controllers
    block: create 'slaves' and 'holders' entries for hidden gendisks
    nvme: also expose the namespace identification sysfs files for mpath nodes
    nvme: implement multipath access to nvme subsystems
    nvme: track shared namespaces
    nvme: introduce a nvme_ns_ids structure
    nvme: track subsystems
    block, nvme: Introduce blk_mq_req_flags_t
    block, scsi: Make SCSI quiesce and resume work reliably
    block: Add the QUEUE_FLAG_PREEMPT_ONLY request queue flag
    ...

    Linus Torvalds