1. 21 Oct, 2018 35 commits
  2. 30 Sep, 2018 4 commits
    • Matthew Wilcox's avatar
      xarray: Change definition of sibling entries · 02c02bf1
      Matthew Wilcox authored
      Instead of storing a pointer to the slot containing the canonical entry,
      store the offset of the slot.  Produces slightly more efficient code
      (~300 bytes) and simplifies the implementation.
      Signed-off-by: default avatarMatthew Wilcox <willy@infradead.org>
      Reviewed-by: default avatarJosef Bacik <jbacik@fb.com>
      02c02bf1
    • Matthew Wilcox's avatar
      xarray: Replace exceptional entries · 3159f943
      Matthew Wilcox authored
      Introduce xarray value entries and tagged pointers to replace radix
      tree exceptional entries.  This is a slight change in encoding to allow
      the use of an extra bit (we can now store BITS_PER_LONG - 1 bits in a
      value entry).  It is also a change in emphasis; exceptional entries are
      intimidating and different.  As the comment explains, you can choose
      to store values or pointers in the xarray and they are both first-class
      citizens.
      Signed-off-by: default avatarMatthew Wilcox <willy@infradead.org>
      Reviewed-by: default avatarJosef Bacik <jbacik@fb.com>
      3159f943
    • Matthew Wilcox's avatar
      idr: Permit any valid kernel pointer to be stored · 66ee620f
      Matthew Wilcox authored
      An upcoming change to the encoding of internal entries will set the bottom
      two bits to 0b10.  Unfortunately, m68k only aligns some data structures
      to 2 bytes, so the IDR will interpret them as internal entries and things
      will go badly wrong.
      
      Change the radix tree so that it stops either when the node indicates
      that it's the bottom of the tree (shift == 0) or when the entry is not an
      internal entry.  This means we cannot insert an arbitrary kernel pointer
      as a multiorder entry, but the IDR does not permit multiorder entries.
      
      Annoyingly, this means the IDR can no longer take advantage of the radix
      tree's ability to store a single entry at offset 0 without allocating
      memory.  A pointer which is 2-byte aligned cannot be stored directly in
      the root as it would be indistinguishable from a node, so we must allocate
      a node in order to store a 2-byte pointer at index 0.  The idr_replace()
      function does not take a GFP flags argument, so cannot allocate memory.
      If a user inserts a 4-byte aligned pointer at index 0 and then replaces
      it with a 2-byte aligned pointer, we must be able to store it.
      
      Arbitrary pointer values are still not permitted; pointers of the
      form 2 + (i * 4) for values of i between 0 and 1023 are reserved for
      the implementation.  These are not valid kernel pointers as they would
      point into the zero page.
      
      This change does cause a runtime memory consumption regression for
      the IDA.  I will recover that later.
      Signed-off-by: default avatarMatthew Wilcox <willy@infradead.org>
      Tested-by: default avatarGuenter Roeck <linux@roeck-us.net>
      66ee620f
    • Matthew Wilcox's avatar
      Update email address · 3d0186bb
      Matthew Wilcox authored
      Redirect some older email addresses that are in the git logs.
      Signed-off-by: default avatarMatthew Wilcox <willy@infradead.org>
      3d0186bb
  3. 29 Sep, 2018 1 commit
    • Greg Kroah-Hartman's avatar
      Merge tag 'for-linus-20180929' of git://git.kernel.dk/linux-block · 291d0e5d
      Greg Kroah-Hartman authored
      Jens writes:
        "Block fixes for 4.19-rc6
      
         A set of fixes that should go into this release. This pull request
         contains:
      
         - A fix (hopefully) for the persistent grants for xen-blkfront. A
           previous fix from this series wasn't complete, hence reverted, and
           this one should hopefully be it. (Boris Ostrovsky)
      
         - Fix for an elevator drain warning with SMR devices, which is
           triggered when you switch schedulers (Damien)
      
         - bcache deadlock fix (Guoju Fang)
      
         - Fix for the block unplug tracepoint, which has had the
           timer/explicit flag reverted since 4.11 (Ilya)
      
         - Fix a regression in this series where the blk-mq timeout hook is
           invoked with the RCU read lock held, hence preventing it from
           blocking (Keith)
      
         - NVMe pull from Christoph, with a single multipath fix (Susobhan Dey)"
      
      * tag 'for-linus-20180929' of git://git.kernel.dk/linux-block:
        xen/blkfront: correct purging of persistent grants
        Revert "xen/blkfront: When purging persistent grants, keep them in the buffer"
        blk-mq: I/O and timer unplugs are inverted in blktrace
        bcache: add separate workqueue for journal_write to avoid deadlock
        xen/blkfront: When purging persistent grants, keep them in the buffer
        block: fix deadline elevator drain for zoned block devices
        blk-mq: Allow blocking queue tag iter callbacks
        nvme: properly propagate errors in nvme_mpath_init
      291d0e5d