1. 08 Jun, 2021 2 commits
    • Darrick J. Wong's avatar
      Merge tag 'xfs-perag-conv-tag' of... · c3eabd36
      Darrick J. Wong authored
      Merge tag 'xfs-perag-conv-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs into xfs-5.14-merge2
      
      xfs: initial agnumber -> perag conversions for shrink
      
      If we want to use active references to the perag to be able to gate
      shrink removing AGs and hence perags safely, we've got a fair bit of
      work to do actually use perags in all the places we need to.
      
      There's a lot of code that iterates ag numbers and then
      looks up perags from that, often multiple times for the same perag
      in the one operation. If we want to use reference counted perags for
      access control, then we need to convert all these uses to perag
      iterators, not agno iterators.
      
      [Patches 1-4]
      
      The first step of this is consolidating all the perag management -
      init, free, get, put, etc into a common location. THis is spread all
      over the place right now, so move it all into libxfs/xfs_ag.[ch].
      This does expose kernel only bits of the perag to libxfs and hence
      userspace, so the structures and code is rearranged to minimise the
      number of ifdefs that need to be added to the userspace codebase.
      The perag iterator in xfs_icache.c is promoted to a first class API
      and expanded to the needs of the code as required.
      
      [Patches 5-10]
      
      These are the first basic perag iterator conversions and changes to
      pass the perag down the stack from those iterators where
      appropriate. A lot of this is obvious, simple changes, though in
      some places we stop passing the perag down the stack because the
      code enters into an as yet unconverted subsystem that still uses raw
      AGs.
      
      [Patches 11-16]
      
      These replace the agno passed in the btree cursor for per-ag btree
      operations with a perag that is passed to the cursor init function.
      The cursor takes it's own reference to the perag, and the reference
      is dropped when the cursor is deleted. Hence we get reference
      coverage for the entire time the cursor is active, even if the code
      that initialised the cursor drops it's reference before the cursor
      or any of it's children (duplicates) have been deleted.
      
      The first patch adds the perag infrastructure for the cursor, the
      next four patches convert a btree cursor at a time, and the last
      removes the agno from the cursor once it is unused.
      
      [Patches 17-21]
      
      These patches are a demonstration of the simplifications and
      cleanups that come from plumbing the perag through interfaces that
      select and then operate on a specific AG. In this case the inode
      allocation algorithm does up to three walks across all AGs before it
      either allocates an inode or fails. Two of these walks are purely
      just to select the AG, and even then it doesn't guarantee inode
      allocation success so there's a third walk if the selected AG
      allocation fails.
      
      These patches collapse the selection and allocation into a single
      loop, simplifies the error handling because xfs_dir_ialloc() always
      returns ENOSPC if no AG was selected for inode allocation or we fail
      to allocate an inode in any AG, gets rid of xfs_dir_ialloc()
      wrapper, converts inode allocation to run entirely from a single
      perag instance, and then factors xfs_dialloc() into a much, much
      simpler loop which is easy to understand.
      
      Hence we end up with the same inode allocation logic, but it only
      needs two complete iterations at worst, makes AG selection and
      allocation atomic w.r.t. shrink and chops out out over 100 lines of
      code from this hot code path.
      
      [Patch 22]
      
      Converts the unlink path to pass perags through it.
      
      There's more conversion work to be done, but this patchset gets
      through a large chunk of it in one hit. Most of the iterators are
      converted, so once this is solidified we can move on to converting
      these to active references for being able to free perags while the
      fs is still active.
      
      * tag 'xfs-perag-conv-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs: (23 commits)
        xfs: remove xfs_perag_t
        xfs: use perag through unlink processing
        xfs: clean up and simplify xfs_dialloc()
        xfs: inode allocation can use a single perag instance
        xfs: get rid of xfs_dir_ialloc()
        xfs: collapse AG selection for inode allocation
        xfs: simplify xfs_dialloc_select_ag() return values
        xfs: remove agno from btree cursor
        xfs: use perag for ialloc btree cursors
        xfs: convert allocbt cursors to use perags
        xfs: convert refcount btree cursor to use perags
        xfs: convert rmap btree cursor to using a perag
        xfs: add a perag to the btree cursor
        xfs: pass perags around in fsmap data dev functions
        xfs: push perags through the ag reservation callouts
        xfs: pass perags through to the busy extent code
        xfs: convert secondary superblock walk to use perags
        xfs: convert xfs_iwalk to use perag references
        xfs: convert raw ag walks to use for_each_perag
        xfs: make for_each_perag... a first class citizen
        ...
      c3eabd36
    • Darrick J. Wong's avatar
      Merge tag 'xfs-buf-bulk-alloc-tag' of... · ebf2e337
      Darrick J. Wong authored
      Merge tag 'xfs-buf-bulk-alloc-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs into xfs-5.14-merge2
      
      xfs: buffer cache bulk page allocation
      
      This patchset makes use of the new bulk page allocation interface to
      reduce the overhead of allocating large numbers of pages in a
      loop.
      
      The first two patches are refactoring buffer memory allocation and
      converting the uncached buffer path to use the same page allocation
      path, followed by converting the page allocation path to use bulk
      allocation.
      
      The rest of the patches are then consolidation of the page
      allocation and freeing code to simplify the code and remove a chunk
      of unnecessary abstraction. This is largely based on a series of
      changes made by Christoph Hellwig.
      
      * tag 'xfs-buf-bulk-alloc-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs:
        xfs: merge xfs_buf_allocate_memory
        xfs: cleanup error handling in xfs_buf_get_map
        xfs: get rid of xb_to_gfp()
        xfs: simplify the b_page_count calculation
        xfs: remove ->b_offset handling for page backed buffers
        xfs: move page freeing into _xfs_buf_free_pages()
        xfs: merge _xfs_buf_get_pages()
        xfs: use alloc_pages_bulk_array() for buffers
        xfs: use xfs_buf_alloc_pages for uncached buffers
        xfs: split up xfs_buf_allocate_memory
      ebf2e337
  2. 07 Jun, 2021 5 commits
  3. 02 Jun, 2021 23 commits
  4. 01 Jun, 2021 5 commits
  5. 30 May, 2021 5 commits
    • Linus Torvalds's avatar
      Linux 5.13-rc4 · 8124c8a6
      Linus Torvalds authored
      8124c8a6
    • Linus Torvalds's avatar
      Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · b90e90f4
      Linus Torvalds authored
      Pull i2c fixes from Wolfram Sang:
       "This is a bit larger than usual at rc4 time. The reason is due to
        Lee's work of fixing newly reported build warnings.
      
        The rest is fixes as usual"
      
      * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (22 commits)
        MAINTAINERS: adjust to removing i2c designware platform data
        i2c: s3c2410: fix possible NULL pointer deref on read message after write
        i2c: mediatek: Disable i2c start_en and clear intr_stat brfore reset
        i2c: i801: Don't generate an interrupt on bus reset
        i2c: mpc: implement erratum A-004447 workaround
        powerpc/fsl: set fsl,i2c-erratum-a004447 flag for P1010 i2c controllers
        powerpc/fsl: set fsl,i2c-erratum-a004447 flag for P2041 i2c controllers
        dt-bindings: i2c: mpc: Add fsl,i2c-erratum-a004447 flag
        i2c: busses: i2c-stm32f4: Remove incorrectly placed ' ' from function name
        i2c: busses: i2c-st: Fix copy/paste function misnaming issues
        i2c: busses: i2c-pnx: Provide descriptions for 'alg_data' data structure
        i2c: busses: i2c-ocores: Place the expected function names into the documentation headers
        i2c: busses: i2c-eg20t: Fix 'bad line' issue and provide description for 'msgs' param
        i2c: busses: i2c-designware-master: Fix misnaming of 'i2c_dw_init_master()'
        i2c: busses: i2c-cadence: Fix incorrectly documented 'enum cdns_i2c_slave_mode'
        i2c: busses: i2c-ali1563: File headers are not good candidates for kernel-doc
        i2c: muxes: i2c-arb-gpio-challenge: Demote non-conformant kernel-doc headers
        i2c: busses: i2c-nomadik: Fix formatting issue pertaining to 'timeout'
        i2c: sh_mobile: Use new clock calculation formulas for RZ/G2E
        i2c: I2C_HISI should depend on ACPI
        ...
      b90e90f4
    • Linus Torvalds's avatar
      Merge tag 'seccomp-fixes-v5.13-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux · 9a76c0ee
      Linus Torvalds authored
      Pull seccomp fixes from Kees Cook:
       "This fixes a hard-to-hit race condition in the addfd user_notif
        feature of seccomp, visible since v5.9.
      
        And a small documentation fix"
      
      * tag 'seccomp-fixes-v5.13-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
        seccomp: Refactor notification handler to prepare for new semantics
        Documentation: seccomp: Fix user notification documentation
      9a76c0ee
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-5.13-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · 9d68fe84
      Linus Torvalds authored
      Pull RISC-V fixes from Palmer Dabbelt:
       "A handful of RISC-V related fixes:
      
         - avoid errors when the stack tracing code is tracing itself.
      
         - resurrect the memtest= kernel command line argument on RISC-V,
           which was briefly enabled during the merge window before a
           refactoring disabled it.
      
         - build fix and some warning cleanups"
      
      * tag 'riscv-for-linus-5.13-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
        riscv: kexec: Fix W=1 build warnings
        riscv: kprobes: Fix build error when MMU=n
        riscv: Select ARCH_USE_MEMTEST
        riscv: stacktrace: fix the riscv stacktrace when CONFIG_FRAME_POINTER enabled
      9d68fe84
    • Linus Torvalds's avatar
      Merge tag 'xfs-5.13-fixes-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · 75b9c727
      Linus Torvalds authored
      Pull xfs fixes from Darrick Wong:
       "This week's pile mitigates some decades-old problems in how extent
        size hints interact with realtime volumes, fixes some failures in
        online shrink, and fixes a problem where directory and symlink
        shrinking on extremely fragmented filesystems could fail.
      
        The most user-notable change here is to point users at our (new) IRC
        channel on OFTC. Freedom isn't free, it costs folks like you and me;
        and if you don't kowtow, they'll expel everyone and take over your
        channel. (Ok, ok, that didn't fit the song lyrics...)
      
        Summary:
      
         - Fix a bug where unmapping operations end earlier than expected,
           which can cause chaos on multi-block directory and symlink shrink
           operations.
      
         - Fix an erroneous assert that can trigger if we try to transition a
           bmap structure from btree format to extents format with zero
           extents. This was exposed by xfs/538"
      
      * tag 'xfs-5.13-fixes-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs: bunmapi has unnecessary AG lock ordering issues
        xfs: btree format inode forks can have zero extents
        xfs: add new IRC channel to MAINTAINERS
        xfs: validate extsz hints against rt extent size when rtinherit is set
        xfs: standardize extent size hint validation
        xfs: check free AG space when making per-AG reservations
      75b9c727