1. Dec 22, 2023
    • Christoph Hellwig's avatar
      xfs: remove the xfs_alloc_arg argument to xfs_bmap_btalloc_accounting · eef519d7
      Christoph Hellwig authored
      
      
      xfs_bmap_btalloc_accounting only uses the len field from args, but that
      has just been propagated to ap->length field by the caller.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
      Signed-off-by: default avatarChandan Babu R <chandanbabu@kernel.org>
      eef519d7
    • Christoph Hellwig's avatar
      xfs: turn the xfs_trans_mod_dquot_byino stub into an inline function · 825b49e4
      Christoph Hellwig authored
      
      
      Without this upcoming change can cause an unused variable warning,
      when adding a local variable for the fields field passed to it.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
      Signed-off-by: default avatarChandan Babu R <chandanbabu@kernel.org>
      825b49e4
    • Christoph Hellwig's avatar
      xfs: consider minlen sized extents in xfs_rtallocate_extent_block · 944df759
      Christoph Hellwig authored
      
      
      minlen is the lower bound on the extent length that the caller can
      accept, and maxlen is at this point the maximal available length.
      This means a minlen extent is perfectly fine to use, so do it.  This
      matches the equivalent logic in xfs_rtallocate_extent_exact that also
      accepts a minlen sized extent.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
      Signed-off-by: default avatarChandan Babu R <chandanbabu@kernel.org>
      944df759
    • Wang Jinchao's avatar
      xfs/health: cleanup, remove duplicated including · b5785f61
      Wang Jinchao authored
      
      
      remove the second ones:
      \#include "xfs_trans_resv.h"
      \#include "xfs_mount.h"
      
      Signed-off-by: default avatarWang Jinchao <wangjinchao@xfusion.com>
      Reviewed-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
      Signed-off-by: default avatarChandan Babu R <chandanbabu@kernel.org>
      b5785f61
    • Long Li's avatar
      xfs: fix perag leak when growfs fails · 78239218
      Long Li authored
      During growfs, if new ag in memory has been initialized, however
      sb_agcount has not been updated, if an error occurs at this time it
      will cause perag leaks as follows, these new AGs will not been freed
      during umount , because of these new AGs are not visible(that is
      included in mp->m_sb.sb_agcount).
      
      unreferenced object 0xffff88810be40200 (size 512):
        comm "xfs_growfs", pid 857, jiffies 4294909093
        hex dump (first 32 bytes):
          00 c0 c1 05 81 88 ff ff 04 00 00 00 00 00 00 00  ................
          01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace (crc 381741e2):
          [<ffffffff8191aef6>] __kmalloc+0x386/0x4f0
          [<ffffffff82553e65>] kmem_alloc+0xb5/0x2f0
          [<ffffffff8238dac5>] xfs_initialize_perag+0xc5/0x810
          [<ffffffff824f679c>] xfs_growfs_data+0x9bc/0xbc0
          [<ffffffff8250b90e>] xfs_file_ioctl+0x5fe/0x14d0
          [<ffffffff81aa5194>] __x64_sys_ioctl+0x144/0x1c0
          [<ffffffff83c3d81f>] do_syscall_64+0x3f/0xe0
          [<ffffffff83e00087>] entry_SYSCALL_64_after_hwframe+0x62/0x6a
      unreferenced object 0xffff88810be40800 (size 512):
        comm "xfs_growfs", pid 857, jiffies 4294909093
        hex dump (first 32 bytes):
          20 00 00 00 00 00 00 00 57 ef be dc 00 00 00 00   .......W.......
          10 08 e4 0b 81 88 ff ff 10 08 e4 0b 81 88 ff ff  ................
        backtrace (crc bde50e2d):
          [<ffffffff8191b43a>] __kmalloc_node+0x3da/0x540
          [<ffffffff81814489>] kvmalloc_node+0x99/0x160
          [<ffffffff8286acff>] bucket_table_alloc.isra.0+0x5f/0x400
          [<ffffffff8286bdc5>] rhashtable_init+0x405/0x760
          [<ffffffff8238dda3>] xfs_initialize_perag+0x3a3/0x810
          [<ffffffff824f679c>] xfs_growfs_data+0x9bc/0xbc0
          [<ffffffff8250b90e>] xfs_file_ioctl+0x5fe/0x14d0
          [<ffffffff81aa5194>] __x64_sys_ioctl+0x144/0x1c0
          [<ffffffff83c3d81f>] do_syscall_64+0x3f/0xe0
          [<ffffffff83e00087>] entry_SYSCALL_64_after_hwframe+0x62/0x6a
      
      Factor out xfs_free_unused_perag_range() from xfs_initialize_perag(),
      used for freeing unused perag within a specified range in error handling,
      included in the error path of the growfs failure.
      
      Fixes: 1c1c6ebc
      
       ("xfs: Replace per-ag array with a radix tree")
      Signed-off-by: default avatarLong Li <leo.lilong@huawei.com>
      Reviewed-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
      Signed-off-by: default avatarChandan Babu R <chandanbabu@kernel.org>
      78239218
    • Long Li's avatar
      xfs: add lock protection when remove perag from radix tree · 07afd317
      Long Li authored
      
      
      Take mp->m_perag_lock for deletions from the perag radix tree in
      xfs_initialize_perag to prevent racing with tagging operations.
      Lookups are fine - they are RCU protected so already deal with the
      tree changing shape underneath the lookup - but tagging operations
      require the tree to be stable while the tags are propagated back up
      to the root.
      
      Right now there's nothing stopping radix tree tagging from operating
      while a growfs operation is progress and adding/removing new entries
      into the radix tree.
      
      Hence we can have traversals that require a stable tree occurring at
      the same time we are removing unused entries from the radix tree which
      causes the shape of the tree to change.
      
      Likely this hasn't caused a problem in the past because we are only
      doing append addition and removal so the active AG part of the tree
      is not changing shape, but that doesn't mean it is safe. Just making
      the radix tree modifications serialise against each other is obviously
      correct.
      
      Signed-off-by: default avatarLong Li <leo.lilong@huawei.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
      Signed-off-by: default avatarChandan Babu R <chandanbabu@kernel.org>
      07afd317
  2. Dec 16, 2023