* [PATCH 0/2] *** Code cleanup ***
@ 2025-02-28 8:26 Julian Sun
2025-02-28 8:26 ` [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation Julian Sun
2025-02-28 8:26 ` [PATCH 2/2] xfs: refactor out xfs_buf_get_maps() Julian Sun
0 siblings, 2 replies; 9+ messages in thread
From: Julian Sun @ 2025-02-28 8:26 UTC (permalink / raw)
To: linux-xfs; +Cc: cem, djwong, Julian Sun
Julian Sun (2):
xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
xfs: refactor out xfs_buf_get_maps()
fs/xfs/libxfs/xfs_da_btree.c | 4 ----
fs/xfs/libxfs/xfs_dir2.c | 8 --------
fs/xfs/xfs_buf.c | 15 +++------------
fs/xfs/xfs_mru_cache.c | 6 ------
fs/xfs/xfs_super.c | 2 --
5 files changed, 3 insertions(+), 32 deletions(-)
--
2.39.5
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
2025-02-28 8:26 [PATCH 0/2] *** Code cleanup *** Julian Sun
@ 2025-02-28 8:26 ` Julian Sun
2025-03-01 10:20 ` kernel test robot
` (2 more replies)
2025-02-28 8:26 ` [PATCH 2/2] xfs: refactor out xfs_buf_get_maps() Julian Sun
1 sibling, 3 replies; 9+ messages in thread
From: Julian Sun @ 2025-02-28 8:26 UTC (permalink / raw)
To: linux-xfs; +Cc: cem, djwong, Julian Sun
The __GFP_NOFAIL flag ensures that allocation will not fail.
So remove the unnecessary checks.
Signed-off-by: Julian Sun <sunjunchao2870@gmail.com>
---
fs/xfs/libxfs/xfs_da_btree.c | 4 ----
fs/xfs/libxfs/xfs_dir2.c | 8 --------
fs/xfs/xfs_buf.c | 4 ----
fs/xfs/xfs_mru_cache.c | 6 ------
fs/xfs/xfs_super.c | 2 --
5 files changed, 24 deletions(-)
diff --git a/fs/xfs/libxfs/xfs_da_btree.c b/fs/xfs/libxfs/xfs_da_btree.c
index 17d9e6154f19..d4c6ad6be5e1 100644
--- a/fs/xfs/libxfs/xfs_da_btree.c
+++ b/fs/xfs/libxfs/xfs_da_btree.c
@@ -2718,10 +2718,6 @@ xfs_dabuf_map(
if (nirecs > 1) {
map = kzalloc(nirecs * sizeof(struct xfs_buf_map),
GFP_KERNEL | __GFP_NOLOCKDEP | __GFP_NOFAIL);
- if (!map) {
- error = -ENOMEM;
- goto out_free_irecs;
- }
*mapp = map;
}
diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c
index 1775abcfa04d..7d837510dc3b 100644
--- a/fs/xfs/libxfs/xfs_dir2.c
+++ b/fs/xfs/libxfs/xfs_dir2.c
@@ -249,8 +249,6 @@ xfs_dir_init(
return error;
args = kzalloc(sizeof(*args), GFP_KERNEL | __GFP_NOFAIL);
- if (!args)
- return -ENOMEM;
args->geo = dp->i_mount->m_dir_geo;
args->dp = dp;
@@ -342,8 +340,6 @@ xfs_dir_createname(
}
args = kzalloc(sizeof(*args), GFP_KERNEL | __GFP_NOFAIL);
- if (!args)
- return -ENOMEM;
args->geo = dp->i_mount->m_dir_geo;
args->name = name->name;
@@ -504,8 +500,6 @@ xfs_dir_removename(
XFS_STATS_INC(dp->i_mount, xs_dir_remove);
args = kzalloc(sizeof(*args), GFP_KERNEL | __GFP_NOFAIL);
- if (!args)
- return -ENOMEM;
args->geo = dp->i_mount->m_dir_geo;
args->name = name->name;
@@ -564,8 +558,6 @@ xfs_dir_replace(
return rval;
args = kzalloc(sizeof(*args), GFP_KERNEL | __GFP_NOFAIL);
- if (!args)
- return -ENOMEM;
args->geo = dp->i_mount->m_dir_geo;
args->name = name->name;
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
index 15bb790359f8..4b53dde32689 100644
--- a/fs/xfs/xfs_buf.c
+++ b/fs/xfs/xfs_buf.c
@@ -182,8 +182,6 @@ xfs_buf_get_maps(
bp->b_maps = kzalloc(map_count * sizeof(struct xfs_buf_map),
GFP_KERNEL | __GFP_NOLOCKDEP | __GFP_NOFAIL);
- if (!bp->b_maps)
- return -ENOMEM;
return 0;
}
@@ -326,8 +324,6 @@ xfs_buf_alloc_kmem(
gfp_mask |= __GFP_ZERO;
bp->b_addr = kmalloc(size, gfp_mask);
- if (!bp->b_addr)
- return -ENOMEM;
if (((unsigned long)(bp->b_addr + size - 1) & PAGE_MASK) !=
((unsigned long)bp->b_addr & PAGE_MASK)) {
diff --git a/fs/xfs/xfs_mru_cache.c b/fs/xfs/xfs_mru_cache.c
index d0f5b403bdbe..0d08d6b5e5be 100644
--- a/fs/xfs/xfs_mru_cache.c
+++ b/fs/xfs/xfs_mru_cache.c
@@ -333,17 +333,11 @@ xfs_mru_cache_create(
return -EINVAL;
mru = kzalloc(sizeof(*mru), GFP_KERNEL | __GFP_NOFAIL);
- if (!mru)
- return -ENOMEM;
/* An extra list is needed to avoid reaping up to a grp_time early. */
mru->grp_count = grp_count + 1;
mru->lists = kzalloc(mru->grp_count * sizeof(*mru->lists),
GFP_KERNEL | __GFP_NOFAIL);
- if (!mru->lists) {
- err = -ENOMEM;
- goto exit;
- }
for (grp = 0; grp < mru->grp_count; grp++)
INIT_LIST_HEAD(mru->lists + grp);
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index 0055066fb1d9..59a600d8de7c 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -2075,8 +2075,6 @@ xfs_init_fs_context(
int i;
mp = kzalloc(sizeof(struct xfs_mount), GFP_KERNEL | __GFP_NOFAIL);
- if (!mp)
- return -ENOMEM;
spin_lock_init(&mp->m_sb_lock);
for (i = 0; i < XG_TYPE_MAX; i++)
--
2.39.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/2] xfs: refactor out xfs_buf_get_maps()
2025-02-28 8:26 [PATCH 0/2] *** Code cleanup *** Julian Sun
2025-02-28 8:26 ` [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation Julian Sun
@ 2025-02-28 8:26 ` Julian Sun
2025-03-01 11:55 ` kernel test robot
2025-03-04 13:58 ` Christoph Hellwig
1 sibling, 2 replies; 9+ messages in thread
From: Julian Sun @ 2025-02-28 8:26 UTC (permalink / raw)
To: linux-xfs; +Cc: cem, djwong, Julian Sun
Since xfs_buf_get_maps() now always returns 0, we can change
its return type to void, so callers no longer need to check for errors.
Signed-off-by: Julian Sun <sunjunchao2870@gmail.com>
---
fs/xfs/xfs_buf.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
index 4b53dde32689..adb9a84b86fc 100644
--- a/fs/xfs/xfs_buf.c
+++ b/fs/xfs/xfs_buf.c
@@ -167,7 +167,7 @@ xfs_buf_stale(
spin_unlock(&bp->b_lock);
}
-static int
+static void
xfs_buf_get_maps(
struct xfs_buf *bp,
int map_count)
@@ -177,12 +177,11 @@ xfs_buf_get_maps(
if (map_count == 1) {
bp->b_maps = &bp->__b_map;
- return 0;
+ return;
}
bp->b_maps = kzalloc(map_count * sizeof(struct xfs_buf_map),
GFP_KERNEL | __GFP_NOLOCKDEP | __GFP_NOFAIL);
- return 0;
}
static void
@@ -236,11 +235,7 @@ _xfs_buf_alloc(
bp->b_mount = target->bt_mount;
bp->b_flags = flags;
- error = xfs_buf_get_maps(bp, nmaps);
- if (error) {
- kmem_cache_free(xfs_buf_cache, bp);
- return error;
- }
+ xfs_buf_get_maps(bp, nmaps);
bp->b_rhash_key = map[0].bm_bn;
bp->b_length = 0;
--
2.39.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
2025-02-28 8:26 ` [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation Julian Sun
@ 2025-03-01 10:20 ` kernel test robot
2025-03-06 15:31 ` kernel test robot
2025-03-07 13:58 ` Dan Carpenter
2 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2025-03-01 10:20 UTC (permalink / raw)
To: Julian Sun, linux-xfs; +Cc: llvm, oe-kbuild-all, cem, djwong, Julian Sun
Hi Julian,
kernel test robot noticed the following build warnings:
[auto build test WARNING on xfs-linux/for-next]
[also build test WARNING on linus/master v6.14-rc4 next-20250228]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Julian-Sun/xfs-remove-unnecessary-checks-for-__GFP_NOFAIL-allocation/20250228-162815
base: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next
patch link: https://lore.kernel.org/r/20250228082622.2638686-2-sunjunchao2870%40gmail.com
patch subject: [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
config: i386-buildonly-randconfig-001-20250301 (https://download.01.org/0day-ci/archive/20250301/202503011738.qvNVWziu-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250301/202503011738.qvNVWziu-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202503011738.qvNVWziu-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> fs/xfs/xfs_mru_cache.c:359:1: warning: unused label 'exit' [-Wunused-label]
359 | exit:
| ^~~~~
1 warning generated.
vim +/exit +359 fs/xfs/xfs_mru_cache.c
2a82b8be8a8dac David Chinner 2007-07-11 307
2a82b8be8a8dac David Chinner 2007-07-11 308 /*
2a82b8be8a8dac David Chinner 2007-07-11 309 * To initialise a struct xfs_mru_cache pointer, call xfs_mru_cache_create()
2a82b8be8a8dac David Chinner 2007-07-11 310 * with the address of the pointer, a lifetime value in milliseconds, a group
2a82b8be8a8dac David Chinner 2007-07-11 311 * count and a free function to use when deleting elements. This function
2a82b8be8a8dac David Chinner 2007-07-11 312 * returns 0 if the initialisation was successful.
2a82b8be8a8dac David Chinner 2007-07-11 313 */
2a82b8be8a8dac David Chinner 2007-07-11 314 int
2a82b8be8a8dac David Chinner 2007-07-11 315 xfs_mru_cache_create(
22328d712dd7fd Christoph Hellwig 2014-04-23 316 struct xfs_mru_cache **mrup,
7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 317 void *data,
2a82b8be8a8dac David Chinner 2007-07-11 318 unsigned int lifetime_ms,
2a82b8be8a8dac David Chinner 2007-07-11 319 unsigned int grp_count,
2a82b8be8a8dac David Chinner 2007-07-11 320 xfs_mru_cache_free_func_t free_func)
2a82b8be8a8dac David Chinner 2007-07-11 321 {
22328d712dd7fd Christoph Hellwig 2014-04-23 322 struct xfs_mru_cache *mru = NULL;
2a82b8be8a8dac David Chinner 2007-07-11 323 int err = 0, grp;
2a82b8be8a8dac David Chinner 2007-07-11 324 unsigned int grp_time;
2a82b8be8a8dac David Chinner 2007-07-11 325
2a82b8be8a8dac David Chinner 2007-07-11 326 if (mrup)
2a82b8be8a8dac David Chinner 2007-07-11 327 *mrup = NULL;
2a82b8be8a8dac David Chinner 2007-07-11 328
2a82b8be8a8dac David Chinner 2007-07-11 329 if (!mrup || !grp_count || !lifetime_ms || !free_func)
2451337dd04390 Dave Chinner 2014-06-25 330 return -EINVAL;
2a82b8be8a8dac David Chinner 2007-07-11 331
2a82b8be8a8dac David Chinner 2007-07-11 332 if (!(grp_time = msecs_to_jiffies(lifetime_ms) / grp_count))
2451337dd04390 Dave Chinner 2014-06-25 333 return -EINVAL;
2a82b8be8a8dac David Chinner 2007-07-11 334
10634530f7ba94 Dave Chinner 2024-01-16 335 mru = kzalloc(sizeof(*mru), GFP_KERNEL | __GFP_NOFAIL);
2a82b8be8a8dac David Chinner 2007-07-11 336
2a82b8be8a8dac David Chinner 2007-07-11 337 /* An extra list is needed to avoid reaping up to a grp_time early. */
2a82b8be8a8dac David Chinner 2007-07-11 338 mru->grp_count = grp_count + 1;
10634530f7ba94 Dave Chinner 2024-01-16 339 mru->lists = kzalloc(mru->grp_count * sizeof(*mru->lists),
10634530f7ba94 Dave Chinner 2024-01-16 340 GFP_KERNEL | __GFP_NOFAIL);
2a82b8be8a8dac David Chinner 2007-07-11 341
2a82b8be8a8dac David Chinner 2007-07-11 342 for (grp = 0; grp < mru->grp_count; grp++)
2a82b8be8a8dac David Chinner 2007-07-11 343 INIT_LIST_HEAD(mru->lists + grp);
2a82b8be8a8dac David Chinner 2007-07-11 344
2a82b8be8a8dac David Chinner 2007-07-11 345 /*
2a82b8be8a8dac David Chinner 2007-07-11 346 * We use GFP_KERNEL radix tree preload and do inserts under a
2a82b8be8a8dac David Chinner 2007-07-11 347 * spinlock so GFP_ATOMIC is appropriate for the radix tree itself.
2a82b8be8a8dac David Chinner 2007-07-11 348 */
2a82b8be8a8dac David Chinner 2007-07-11 349 INIT_RADIX_TREE(&mru->store, GFP_ATOMIC);
2a82b8be8a8dac David Chinner 2007-07-11 350 INIT_LIST_HEAD(&mru->reap_list);
007c61c68640ea Eric Sandeen 2007-10-11 351 spin_lock_init(&mru->lock);
2a82b8be8a8dac David Chinner 2007-07-11 352 INIT_DELAYED_WORK(&mru->work, _xfs_mru_cache_reap);
2a82b8be8a8dac David Chinner 2007-07-11 353
2a82b8be8a8dac David Chinner 2007-07-11 354 mru->grp_time = grp_time;
2a82b8be8a8dac David Chinner 2007-07-11 355 mru->free_func = free_func;
7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 356 mru->data = data;
2a82b8be8a8dac David Chinner 2007-07-11 357 *mrup = mru;
2a82b8be8a8dac David Chinner 2007-07-11 358
2a82b8be8a8dac David Chinner 2007-07-11 @359 exit:
2a82b8be8a8dac David Chinner 2007-07-11 360 if (err && mru && mru->lists)
d4c75a1b40cd03 Dave Chinner 2024-01-16 361 kfree(mru->lists);
2a82b8be8a8dac David Chinner 2007-07-11 362 if (err && mru)
d4c75a1b40cd03 Dave Chinner 2024-01-16 363 kfree(mru);
2a82b8be8a8dac David Chinner 2007-07-11 364
2a82b8be8a8dac David Chinner 2007-07-11 365 return err;
2a82b8be8a8dac David Chinner 2007-07-11 366 }
2a82b8be8a8dac David Chinner 2007-07-11 367
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] xfs: refactor out xfs_buf_get_maps()
2025-02-28 8:26 ` [PATCH 2/2] xfs: refactor out xfs_buf_get_maps() Julian Sun
@ 2025-03-01 11:55 ` kernel test robot
2025-03-04 13:58 ` Christoph Hellwig
1 sibling, 0 replies; 9+ messages in thread
From: kernel test robot @ 2025-03-01 11:55 UTC (permalink / raw)
To: Julian Sun, linux-xfs; +Cc: llvm, oe-kbuild-all, cem, djwong, Julian Sun
Hi Julian,
kernel test robot noticed the following build warnings:
[auto build test WARNING on xfs-linux/for-next]
[also build test WARNING on linus/master v6.14-rc4 next-20250228]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Julian-Sun/xfs-remove-unnecessary-checks-for-__GFP_NOFAIL-allocation/20250228-162815
base: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next
patch link: https://lore.kernel.org/r/20250228082622.2638686-3-sunjunchao2870%40gmail.com
patch subject: [PATCH 2/2] xfs: refactor out xfs_buf_get_maps()
config: i386-buildonly-randconfig-001-20250301 (https://download.01.org/0day-ci/archive/20250301/202503011909.oyoVnyss-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250301/202503011909.oyoVnyss-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202503011909.oyoVnyss-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> fs/xfs/xfs_buf.c:148:8: warning: unused variable 'error' [-Wunused-variable]
148 | int error;
| ^~~~~
1 warning generated.
vim +/error +148 fs/xfs/xfs_buf.c
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 138
32dff5e5d1b588 fs/xfs/xfs_buf.c Darrick J. Wong 2020-01-23 139 static int
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 140 _xfs_buf_alloc(
4347b9d7ad4223 fs/xfs/xfs_buf.c Christoph Hellwig 2011-10-10 141 struct xfs_buftarg *target,
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 142 struct xfs_buf_map *map,
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 143 int nmaps,
32dff5e5d1b588 fs/xfs/xfs_buf.c Darrick J. Wong 2020-01-23 144 xfs_buf_flags_t flags,
32dff5e5d1b588 fs/xfs/xfs_buf.c Darrick J. Wong 2020-01-23 145 struct xfs_buf **bpp)
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds 2005-04-16 146 {
4347b9d7ad4223 fs/xfs/xfs_buf.c Christoph Hellwig 2011-10-10 147 struct xfs_buf *bp;
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 @148 int error;
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 149 int i;
4347b9d7ad4223 fs/xfs/xfs_buf.c Christoph Hellwig 2011-10-10 150
32dff5e5d1b588 fs/xfs/xfs_buf.c Darrick J. Wong 2020-01-23 151 *bpp = NULL;
0b3a76e955ebe3 fs/xfs/xfs_buf.c Dave Chinner 2024-01-16 152 bp = kmem_cache_zalloc(xfs_buf_cache,
0b3a76e955ebe3 fs/xfs/xfs_buf.c Dave Chinner 2024-01-16 153 GFP_KERNEL | __GFP_NOLOCKDEP | __GFP_NOFAIL);
4347b9d7ad4223 fs/xfs/xfs_buf.c Christoph Hellwig 2011-10-10 154
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds 2005-04-16 155 /*
12bcb3f7d4371f fs/xfs/xfs_buf.c Dave Chinner 2012-04-23 156 * We don't want certain flags to appear in b_flags unless they are
12bcb3f7d4371f fs/xfs/xfs_buf.c Dave Chinner 2012-04-23 157 * specifically set by later operations on the buffer.
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds 2005-04-16 158 */
611c99468c7aa1 fs/xfs/xfs_buf.c Dave Chinner 2012-04-23 159 flags &= ~(XBF_UNMAPPED | XBF_TRYLOCK | XBF_ASYNC | XBF_READ_AHEAD);
ce8e922c0e79c8 fs/xfs/linux-2.6/xfs_buf.c Nathan Scott 2006-01-11 160
a9ab28b3d21aec fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-28 161 /*
a9ab28b3d21aec fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-28 162 * A new buffer is held and locked by the owner. This ensures that the
a9ab28b3d21aec fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-28 163 * buffer is owned by the caller and racing RCU lookups right after
a9ab28b3d21aec fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-28 164 * inserting into the hash table are safe (and will have to wait for
a9ab28b3d21aec fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-28 165 * the unlock to do anything non-trivial).
a9ab28b3d21aec fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-28 166 */
ee10f6fcdb961e fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-16 167 bp->b_hold = 1;
a9ab28b3d21aec fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-28 168 sema_init(&bp->b_sema, 0); /* held, no waiters */
a9ab28b3d21aec fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-28 169
a9ab28b3d21aec fs/xfs/xfs_buf.c Christoph Hellwig 2025-01-28 170 spin_lock_init(&bp->b_lock);
430cbeb86fdcbb fs/xfs/linux-2.6/xfs_buf.c Dave Chinner 2010-12-02 171 atomic_set(&bp->b_lru_ref, 1);
b4dd330b9e0c9c fs/xfs/linux-2.6/xfs_buf.c David Chinner 2008-08-13 172 init_completion(&bp->b_iowait);
430cbeb86fdcbb fs/xfs/linux-2.6/xfs_buf.c Dave Chinner 2010-12-02 173 INIT_LIST_HEAD(&bp->b_lru);
ce8e922c0e79c8 fs/xfs/linux-2.6/xfs_buf.c Nathan Scott 2006-01-11 174 INIT_LIST_HEAD(&bp->b_list);
643c8c05e75d97 fs/xfs/xfs_buf.c Carlos Maiolino 2018-01-24 175 INIT_LIST_HEAD(&bp->b_li_list);
ce8e922c0e79c8 fs/xfs/linux-2.6/xfs_buf.c Nathan Scott 2006-01-11 176 bp->b_target = target;
dbd329f1e44ed4 fs/xfs/xfs_buf.c Christoph Hellwig 2019-06-28 177 bp->b_mount = target->bt_mount;
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 178 bp->b_flags = flags;
de1cbee46269a3 fs/xfs/xfs_buf.c Dave Chinner 2012-04-23 179
5c192f274c0024 fs/xfs/xfs_buf.c Julian Sun 2025-02-28 180 xfs_buf_get_maps(bp, nmaps);
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 181
4c7f65aea7b7fe fs/xfs/xfs_buf.c Dave Chinner 2021-08-18 182 bp->b_rhash_key = map[0].bm_bn;
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 183 bp->b_length = 0;
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 184 for (i = 0; i < nmaps; i++) {
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 185 bp->b_maps[i].bm_bn = map[i].bm_bn;
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 186 bp->b_maps[i].bm_len = map[i].bm_len;
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 187 bp->b_length += map[i].bm_len;
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 188 }
3e85c868a69780 fs/xfs/xfs_buf.c Dave Chinner 2012-06-22 189
ce8e922c0e79c8 fs/xfs/linux-2.6/xfs_buf.c Nathan Scott 2006-01-11 190 atomic_set(&bp->b_pin_count, 0);
ce8e922c0e79c8 fs/xfs/linux-2.6/xfs_buf.c Nathan Scott 2006-01-11 191 init_waitqueue_head(&bp->b_waiters);
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds 2005-04-16 192
dbd329f1e44ed4 fs/xfs/xfs_buf.c Christoph Hellwig 2019-06-28 193 XFS_STATS_INC(bp->b_mount, xb_create);
0b1b213fcf3a84 fs/xfs/linux-2.6/xfs_buf.c Christoph Hellwig 2009-12-14 194 trace_xfs_buf_init(bp, _RET_IP_);
4347b9d7ad4223 fs/xfs/xfs_buf.c Christoph Hellwig 2011-10-10 195
32dff5e5d1b588 fs/xfs/xfs_buf.c Darrick J. Wong 2020-01-23 196 *bpp = bp;
32dff5e5d1b588 fs/xfs/xfs_buf.c Darrick J. Wong 2020-01-23 197 return 0;
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds 2005-04-16 198 }
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds 2005-04-16 199
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] xfs: refactor out xfs_buf_get_maps()
2025-02-28 8:26 ` [PATCH 2/2] xfs: refactor out xfs_buf_get_maps() Julian Sun
2025-03-01 11:55 ` kernel test robot
@ 2025-03-04 13:58 ` Christoph Hellwig
1 sibling, 0 replies; 9+ messages in thread
From: Christoph Hellwig @ 2025-03-04 13:58 UTC (permalink / raw)
To: Julian Sun; +Cc: linux-xfs, cem, djwong
On Fri, Feb 28, 2025 at 04:26:22PM +0800, Julian Sun wrote:
> Since xfs_buf_get_maps() now always returns 0, we can change
> its return type to void, so callers no longer need to check for errors.
If we touch this anyway I'd just rather kill xfs_buf_get_maps
entirely.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
2025-02-28 8:26 ` [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation Julian Sun
2025-03-01 10:20 ` kernel test robot
@ 2025-03-06 15:31 ` kernel test robot
2025-03-07 13:58 ` Dan Carpenter
2 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2025-03-06 15:31 UTC (permalink / raw)
To: Julian Sun, linux-xfs; +Cc: oe-kbuild-all, cem, djwong, Julian Sun
Hi Julian,
kernel test robot noticed the following build warnings:
[auto build test WARNING on xfs-linux/for-next]
[also build test WARNING on linus/master v6.14-rc5 next-20250306]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Julian-Sun/xfs-remove-unnecessary-checks-for-__GFP_NOFAIL-allocation/20250228-162815
base: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next
patch link: https://lore.kernel.org/r/20250228082622.2638686-2-sunjunchao2870%40gmail.com
patch subject: [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
config: csky-randconfig-002-20250305 (https://download.01.org/0day-ci/archive/20250306/202503062303.aLFvYL6o-lkp@intel.com/config)
compiler: csky-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250306/202503062303.aLFvYL6o-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202503062303.aLFvYL6o-lkp@intel.com/
All warnings (new ones prefixed by >>):
fs/xfs/xfs_mru_cache.c: In function 'xfs_mru_cache_create':
>> fs/xfs/xfs_mru_cache.c:359:1: warning: label 'exit' defined but not used [-Wunused-label]
359 | exit:
| ^~~~
vim +/exit +359 fs/xfs/xfs_mru_cache.c
2a82b8be8a8dac David Chinner 2007-07-11 307
2a82b8be8a8dac David Chinner 2007-07-11 308 /*
2a82b8be8a8dac David Chinner 2007-07-11 309 * To initialise a struct xfs_mru_cache pointer, call xfs_mru_cache_create()
2a82b8be8a8dac David Chinner 2007-07-11 310 * with the address of the pointer, a lifetime value in milliseconds, a group
2a82b8be8a8dac David Chinner 2007-07-11 311 * count and a free function to use when deleting elements. This function
2a82b8be8a8dac David Chinner 2007-07-11 312 * returns 0 if the initialisation was successful.
2a82b8be8a8dac David Chinner 2007-07-11 313 */
2a82b8be8a8dac David Chinner 2007-07-11 314 int
2a82b8be8a8dac David Chinner 2007-07-11 315 xfs_mru_cache_create(
22328d712dd7fd Christoph Hellwig 2014-04-23 316 struct xfs_mru_cache **mrup,
7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 317 void *data,
2a82b8be8a8dac David Chinner 2007-07-11 318 unsigned int lifetime_ms,
2a82b8be8a8dac David Chinner 2007-07-11 319 unsigned int grp_count,
2a82b8be8a8dac David Chinner 2007-07-11 320 xfs_mru_cache_free_func_t free_func)
2a82b8be8a8dac David Chinner 2007-07-11 321 {
22328d712dd7fd Christoph Hellwig 2014-04-23 322 struct xfs_mru_cache *mru = NULL;
2a82b8be8a8dac David Chinner 2007-07-11 323 int err = 0, grp;
2a82b8be8a8dac David Chinner 2007-07-11 324 unsigned int grp_time;
2a82b8be8a8dac David Chinner 2007-07-11 325
2a82b8be8a8dac David Chinner 2007-07-11 326 if (mrup)
2a82b8be8a8dac David Chinner 2007-07-11 327 *mrup = NULL;
2a82b8be8a8dac David Chinner 2007-07-11 328
2a82b8be8a8dac David Chinner 2007-07-11 329 if (!mrup || !grp_count || !lifetime_ms || !free_func)
2451337dd04390 Dave Chinner 2014-06-25 330 return -EINVAL;
2a82b8be8a8dac David Chinner 2007-07-11 331
2a82b8be8a8dac David Chinner 2007-07-11 332 if (!(grp_time = msecs_to_jiffies(lifetime_ms) / grp_count))
2451337dd04390 Dave Chinner 2014-06-25 333 return -EINVAL;
2a82b8be8a8dac David Chinner 2007-07-11 334
10634530f7ba94 Dave Chinner 2024-01-16 335 mru = kzalloc(sizeof(*mru), GFP_KERNEL | __GFP_NOFAIL);
2a82b8be8a8dac David Chinner 2007-07-11 336
2a82b8be8a8dac David Chinner 2007-07-11 337 /* An extra list is needed to avoid reaping up to a grp_time early. */
2a82b8be8a8dac David Chinner 2007-07-11 338 mru->grp_count = grp_count + 1;
10634530f7ba94 Dave Chinner 2024-01-16 339 mru->lists = kzalloc(mru->grp_count * sizeof(*mru->lists),
10634530f7ba94 Dave Chinner 2024-01-16 340 GFP_KERNEL | __GFP_NOFAIL);
2a82b8be8a8dac David Chinner 2007-07-11 341
2a82b8be8a8dac David Chinner 2007-07-11 342 for (grp = 0; grp < mru->grp_count; grp++)
2a82b8be8a8dac David Chinner 2007-07-11 343 INIT_LIST_HEAD(mru->lists + grp);
2a82b8be8a8dac David Chinner 2007-07-11 344
2a82b8be8a8dac David Chinner 2007-07-11 345 /*
2a82b8be8a8dac David Chinner 2007-07-11 346 * We use GFP_KERNEL radix tree preload and do inserts under a
2a82b8be8a8dac David Chinner 2007-07-11 347 * spinlock so GFP_ATOMIC is appropriate for the radix tree itself.
2a82b8be8a8dac David Chinner 2007-07-11 348 */
2a82b8be8a8dac David Chinner 2007-07-11 349 INIT_RADIX_TREE(&mru->store, GFP_ATOMIC);
2a82b8be8a8dac David Chinner 2007-07-11 350 INIT_LIST_HEAD(&mru->reap_list);
007c61c68640ea Eric Sandeen 2007-10-11 351 spin_lock_init(&mru->lock);
2a82b8be8a8dac David Chinner 2007-07-11 352 INIT_DELAYED_WORK(&mru->work, _xfs_mru_cache_reap);
2a82b8be8a8dac David Chinner 2007-07-11 353
2a82b8be8a8dac David Chinner 2007-07-11 354 mru->grp_time = grp_time;
2a82b8be8a8dac David Chinner 2007-07-11 355 mru->free_func = free_func;
7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 356 mru->data = data;
2a82b8be8a8dac David Chinner 2007-07-11 357 *mrup = mru;
2a82b8be8a8dac David Chinner 2007-07-11 358
2a82b8be8a8dac David Chinner 2007-07-11 @359 exit:
2a82b8be8a8dac David Chinner 2007-07-11 360 if (err && mru && mru->lists)
d4c75a1b40cd03 Dave Chinner 2024-01-16 361 kfree(mru->lists);
2a82b8be8a8dac David Chinner 2007-07-11 362 if (err && mru)
d4c75a1b40cd03 Dave Chinner 2024-01-16 363 kfree(mru);
2a82b8be8a8dac David Chinner 2007-07-11 364
2a82b8be8a8dac David Chinner 2007-07-11 365 return err;
2a82b8be8a8dac David Chinner 2007-07-11 366 }
2a82b8be8a8dac David Chinner 2007-07-11 367
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
@ 2025-03-07 13:22 kernel test robot
0 siblings, 0 replies; 9+ messages in thread
From: kernel test robot @ 2025-03-07 13:22 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20250228082622.2638686-2-sunjunchao2870@gmail.com>
References: <20250228082622.2638686-2-sunjunchao2870@gmail.com>
TO: Julian Sun <sunjunchao2870@gmail.com>
TO: linux-xfs@vger.kernel.org
CC: cem@kernel.org
CC: djwong@kernel.org
CC: Julian Sun <sunjunchao2870@gmail.com>
Hi Julian,
kernel test robot noticed the following build warnings:
[auto build test WARNING on xfs-linux/for-next]
[also build test WARNING on linus/master v6.14-rc5 next-20250307]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Julian-Sun/xfs-remove-unnecessary-checks-for-__GFP_NOFAIL-allocation/20250228-162815
base: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next
patch link: https://lore.kernel.org/r/20250228082622.2638686-2-sunjunchao2870%40gmail.com
patch subject: [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
:::::: branch date: 7 days ago
:::::: commit date: 7 days ago
config: sh-randconfig-r073-20250307 (https://download.01.org/0day-ci/archive/20250307/202503072035.d6QqiZWT-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 14.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202503072035.d6QqiZWT-lkp@intel.com/
New smatch warnings:
fs/xfs/xfs_mru_cache.c:360 xfs_mru_cache_create() warn: variable dereferenced before check 'mru' (see line 338)
Old smatch warnings:
fs/xfs/xfs_mru_cache.c:272 _xfs_mru_cache_reap() warn: can 'mru' even be NULL?
vim +/mru +360 fs/xfs/xfs_mru_cache.c
2a82b8be8a8dac David Chinner 2007-07-11 307
2a82b8be8a8dac David Chinner 2007-07-11 308 /*
2a82b8be8a8dac David Chinner 2007-07-11 309 * To initialise a struct xfs_mru_cache pointer, call xfs_mru_cache_create()
2a82b8be8a8dac David Chinner 2007-07-11 310 * with the address of the pointer, a lifetime value in milliseconds, a group
2a82b8be8a8dac David Chinner 2007-07-11 311 * count and a free function to use when deleting elements. This function
2a82b8be8a8dac David Chinner 2007-07-11 312 * returns 0 if the initialisation was successful.
2a82b8be8a8dac David Chinner 2007-07-11 313 */
2a82b8be8a8dac David Chinner 2007-07-11 314 int
2a82b8be8a8dac David Chinner 2007-07-11 315 xfs_mru_cache_create(
22328d712dd7fd Christoph Hellwig 2014-04-23 316 struct xfs_mru_cache **mrup,
7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 317 void *data,
2a82b8be8a8dac David Chinner 2007-07-11 318 unsigned int lifetime_ms,
2a82b8be8a8dac David Chinner 2007-07-11 319 unsigned int grp_count,
2a82b8be8a8dac David Chinner 2007-07-11 320 xfs_mru_cache_free_func_t free_func)
2a82b8be8a8dac David Chinner 2007-07-11 321 {
22328d712dd7fd Christoph Hellwig 2014-04-23 322 struct xfs_mru_cache *mru = NULL;
2a82b8be8a8dac David Chinner 2007-07-11 323 int err = 0, grp;
2a82b8be8a8dac David Chinner 2007-07-11 324 unsigned int grp_time;
2a82b8be8a8dac David Chinner 2007-07-11 325
2a82b8be8a8dac David Chinner 2007-07-11 326 if (mrup)
2a82b8be8a8dac David Chinner 2007-07-11 327 *mrup = NULL;
2a82b8be8a8dac David Chinner 2007-07-11 328
2a82b8be8a8dac David Chinner 2007-07-11 329 if (!mrup || !grp_count || !lifetime_ms || !free_func)
2451337dd04390 Dave Chinner 2014-06-25 330 return -EINVAL;
2a82b8be8a8dac David Chinner 2007-07-11 331
2a82b8be8a8dac David Chinner 2007-07-11 332 if (!(grp_time = msecs_to_jiffies(lifetime_ms) / grp_count))
2451337dd04390 Dave Chinner 2014-06-25 333 return -EINVAL;
2a82b8be8a8dac David Chinner 2007-07-11 334
10634530f7ba94 Dave Chinner 2024-01-16 335 mru = kzalloc(sizeof(*mru), GFP_KERNEL | __GFP_NOFAIL);
2a82b8be8a8dac David Chinner 2007-07-11 336
2a82b8be8a8dac David Chinner 2007-07-11 337 /* An extra list is needed to avoid reaping up to a grp_time early. */
2a82b8be8a8dac David Chinner 2007-07-11 @338 mru->grp_count = grp_count + 1;
10634530f7ba94 Dave Chinner 2024-01-16 339 mru->lists = kzalloc(mru->grp_count * sizeof(*mru->lists),
10634530f7ba94 Dave Chinner 2024-01-16 340 GFP_KERNEL | __GFP_NOFAIL);
2a82b8be8a8dac David Chinner 2007-07-11 341
2a82b8be8a8dac David Chinner 2007-07-11 342 for (grp = 0; grp < mru->grp_count; grp++)
2a82b8be8a8dac David Chinner 2007-07-11 343 INIT_LIST_HEAD(mru->lists + grp);
2a82b8be8a8dac David Chinner 2007-07-11 344
2a82b8be8a8dac David Chinner 2007-07-11 345 /*
2a82b8be8a8dac David Chinner 2007-07-11 346 * We use GFP_KERNEL radix tree preload and do inserts under a
2a82b8be8a8dac David Chinner 2007-07-11 347 * spinlock so GFP_ATOMIC is appropriate for the radix tree itself.
2a82b8be8a8dac David Chinner 2007-07-11 348 */
2a82b8be8a8dac David Chinner 2007-07-11 349 INIT_RADIX_TREE(&mru->store, GFP_ATOMIC);
2a82b8be8a8dac David Chinner 2007-07-11 350 INIT_LIST_HEAD(&mru->reap_list);
007c61c68640ea Eric Sandeen 2007-10-11 351 spin_lock_init(&mru->lock);
2a82b8be8a8dac David Chinner 2007-07-11 352 INIT_DELAYED_WORK(&mru->work, _xfs_mru_cache_reap);
2a82b8be8a8dac David Chinner 2007-07-11 353
2a82b8be8a8dac David Chinner 2007-07-11 354 mru->grp_time = grp_time;
2a82b8be8a8dac David Chinner 2007-07-11 355 mru->free_func = free_func;
7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 356 mru->data = data;
2a82b8be8a8dac David Chinner 2007-07-11 357 *mrup = mru;
2a82b8be8a8dac David Chinner 2007-07-11 358
2a82b8be8a8dac David Chinner 2007-07-11 359 exit:
2a82b8be8a8dac David Chinner 2007-07-11 @360 if (err && mru && mru->lists)
d4c75a1b40cd03 Dave Chinner 2024-01-16 361 kfree(mru->lists);
2a82b8be8a8dac David Chinner 2007-07-11 362 if (err && mru)
d4c75a1b40cd03 Dave Chinner 2024-01-16 363 kfree(mru);
2a82b8be8a8dac David Chinner 2007-07-11 364
2a82b8be8a8dac David Chinner 2007-07-11 365 return err;
2a82b8be8a8dac David Chinner 2007-07-11 366 }
2a82b8be8a8dac David Chinner 2007-07-11 367
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
2025-02-28 8:26 ` [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation Julian Sun
2025-03-01 10:20 ` kernel test robot
2025-03-06 15:31 ` kernel test robot
@ 2025-03-07 13:58 ` Dan Carpenter
2 siblings, 0 replies; 9+ messages in thread
From: Dan Carpenter @ 2025-03-07 13:58 UTC (permalink / raw)
To: oe-kbuild, Julian Sun, linux-xfs
Cc: lkp, oe-kbuild-all, cem, djwong, Julian Sun
Hi Julian,
kernel test robot noticed the following build warnings:
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Julian-Sun/xfs-remove-unnecessary-checks-for-__GFP_NOFAIL-allocation/20250228-162815
base: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next
patch link: https://lore.kernel.org/r/20250228082622.2638686-2-sunjunchao2870%40gmail.com
patch subject: [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation.
config: sh-randconfig-r073-20250307 (https://download.01.org/0day-ci/archive/20250307/202503072035.d6QqiZWT-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 14.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202503072035.d6QqiZWT-lkp@intel.com/
New smatch warnings:
fs/xfs/xfs_mru_cache.c:360 xfs_mru_cache_create() warn: variable dereferenced before check 'mru' (see line 338)
vim +/mru +360 fs/xfs/xfs_mru_cache.c
2a82b8be8a8dac David Chinner 2007-07-11 314 int
2a82b8be8a8dac David Chinner 2007-07-11 315 xfs_mru_cache_create(
22328d712dd7fd Christoph Hellwig 2014-04-23 316 struct xfs_mru_cache **mrup,
7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 317 void *data,
2a82b8be8a8dac David Chinner 2007-07-11 318 unsigned int lifetime_ms,
2a82b8be8a8dac David Chinner 2007-07-11 319 unsigned int grp_count,
2a82b8be8a8dac David Chinner 2007-07-11 320 xfs_mru_cache_free_func_t free_func)
2a82b8be8a8dac David Chinner 2007-07-11 321 {
22328d712dd7fd Christoph Hellwig 2014-04-23 322 struct xfs_mru_cache *mru = NULL;
2a82b8be8a8dac David Chinner 2007-07-11 323 int err = 0, grp;
2a82b8be8a8dac David Chinner 2007-07-11 324 unsigned int grp_time;
2a82b8be8a8dac David Chinner 2007-07-11 325
2a82b8be8a8dac David Chinner 2007-07-11 326 if (mrup)
2a82b8be8a8dac David Chinner 2007-07-11 327 *mrup = NULL;
2a82b8be8a8dac David Chinner 2007-07-11 328
2a82b8be8a8dac David Chinner 2007-07-11 329 if (!mrup || !grp_count || !lifetime_ms || !free_func)
2451337dd04390 Dave Chinner 2014-06-25 330 return -EINVAL;
2a82b8be8a8dac David Chinner 2007-07-11 331
2a82b8be8a8dac David Chinner 2007-07-11 332 if (!(grp_time = msecs_to_jiffies(lifetime_ms) / grp_count))
2451337dd04390 Dave Chinner 2014-06-25 333 return -EINVAL;
2a82b8be8a8dac David Chinner 2007-07-11 334
10634530f7ba94 Dave Chinner 2024-01-16 335 mru = kzalloc(sizeof(*mru), GFP_KERNEL | __GFP_NOFAIL);
2a82b8be8a8dac David Chinner 2007-07-11 336
2a82b8be8a8dac David Chinner 2007-07-11 337 /* An extra list is needed to avoid reaping up to a grp_time early. */
2a82b8be8a8dac David Chinner 2007-07-11 @338 mru->grp_count = grp_count + 1;
10634530f7ba94 Dave Chinner 2024-01-16 339 mru->lists = kzalloc(mru->grp_count * sizeof(*mru->lists),
10634530f7ba94 Dave Chinner 2024-01-16 340 GFP_KERNEL | __GFP_NOFAIL);
2a82b8be8a8dac David Chinner 2007-07-11 341
2a82b8be8a8dac David Chinner 2007-07-11 342 for (grp = 0; grp < mru->grp_count; grp++)
2a82b8be8a8dac David Chinner 2007-07-11 343 INIT_LIST_HEAD(mru->lists + grp);
2a82b8be8a8dac David Chinner 2007-07-11 344
2a82b8be8a8dac David Chinner 2007-07-11 345 /*
2a82b8be8a8dac David Chinner 2007-07-11 346 * We use GFP_KERNEL radix tree preload and do inserts under a
2a82b8be8a8dac David Chinner 2007-07-11 347 * spinlock so GFP_ATOMIC is appropriate for the radix tree itself.
2a82b8be8a8dac David Chinner 2007-07-11 348 */
2a82b8be8a8dac David Chinner 2007-07-11 349 INIT_RADIX_TREE(&mru->store, GFP_ATOMIC);
2a82b8be8a8dac David Chinner 2007-07-11 350 INIT_LIST_HEAD(&mru->reap_list);
007c61c68640ea Eric Sandeen 2007-10-11 351 spin_lock_init(&mru->lock);
2a82b8be8a8dac David Chinner 2007-07-11 352 INIT_DELAYED_WORK(&mru->work, _xfs_mru_cache_reap);
2a82b8be8a8dac David Chinner 2007-07-11 353
2a82b8be8a8dac David Chinner 2007-07-11 354 mru->grp_time = grp_time;
2a82b8be8a8dac David Chinner 2007-07-11 355 mru->free_func = free_func;
7fcd3efa1e9ebe Christoph Hellwig 2018-04-09 356 mru->data = data;
2a82b8be8a8dac David Chinner 2007-07-11 357 *mrup = mru;
2a82b8be8a8dac David Chinner 2007-07-11 358
2a82b8be8a8dac David Chinner 2007-07-11 359 exit:
2a82b8be8a8dac David Chinner 2007-07-11 @360 if (err && mru && mru->lists)
^^^
d4c75a1b40cd03 Dave Chinner 2024-01-16 361 kfree(mru->lists);
2a82b8be8a8dac David Chinner 2007-07-11 362 if (err && mru)
^^^
I normally wouldn't hit forward on this zero-day bot thing because it's
obviously harmless. But since you're removing NULL checks you could
remove these two too if you want.
d4c75a1b40cd03 Dave Chinner 2024-01-16 363 kfree(mru);
2a82b8be8a8dac David Chinner 2007-07-11 364
2a82b8be8a8dac David Chinner 2007-07-11 365 return err;
2a82b8be8a8dac David Chinner 2007-07-11 366 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2025-03-07 13:58 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-28 8:26 [PATCH 0/2] *** Code cleanup *** Julian Sun
2025-02-28 8:26 ` [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation Julian Sun
2025-03-01 10:20 ` kernel test robot
2025-03-06 15:31 ` kernel test robot
2025-03-07 13:58 ` Dan Carpenter
2025-02-28 8:26 ` [PATCH 2/2] xfs: refactor out xfs_buf_get_maps() Julian Sun
2025-03-01 11:55 ` kernel test robot
2025-03-04 13:58 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2025-03-07 13:22 [PATCH 1/2] xfs: remove unnecessary checks for __GFP_NOFAIL allocation kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.