On 2/17/22 3:52 AM, Jeff Layton wrote:
On Thu, 2022-02-17 at 03:33 +0800, kernel test robot wrote:
tree: https://github.com/ceph/ceph-client.git testing
head: 91e59cfc6ca1a2bf594f60474996c71047edd1e5
commit: 7c7e63bc9910b15ffd1f791838ff0a919058f97c [13/14] ceph: eliminate the recursion when rebuilding the snap context
config: hexagon-randconfig-r005-20220216 (https://download.01.org/0day-ci/archive/20220217/202202170318.82LIXBXX-lkp@xxxxxxxxx/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0e628a783b935c70c80815db6c061ec84f884af5)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/ceph/ceph-client/commit/7c7e63bc9910b15ffd1f791838ff0a919058f97c
git remote add ceph-client https://github.com/ceph/ceph-client.git
git fetch --no-tags ceph-client testing
git checkout 7c7e63bc9910b15ffd1f791838ff0a919058f97c
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash fs/ceph/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>
All warnings (new ones prefixed by >>):
fs/ceph/snap.c:438:14: warning: variable '_realm' is uninitialized when used here [-Wuninitialized]
list_del(&_realm->rebuild_item);
^~~~~~
fs/ceph/snap.c:430:33: note: initialize the variable '_realm' to silence this warning
struct ceph_snap_realm *_realm, *child;
^
= NULL
1 warning generated.
vim +/_realm +438 fs/ceph/snap.c
417
418 /*
419 * rebuild snap context for the given realm and all of its children.
420 */
421 static void rebuild_snap_realms(struct ceph_snap_realm *realm,
422 struct list_head *dirty_realms)
423 {
424 LIST_HEAD(realm_queue);
425 int last = 0;
426
427 list_add_tail(&realm->rebuild_item, &realm_queue);
428
429 while (!list_empty(&realm_queue)) {
430 struct ceph_snap_realm *_realm, *child;
431
432 /*
433 * If the last building failed dues to memory
434 * issue, just empty the realm_queue and return
435 * to avoid infinite loop.
436 */
437 if (last < 0) {
> 438 list_del(&_realm->rebuild_item);
439 continue;
440 }
441
442 _realm = list_first_entry(&realm_queue,
443 struct ceph_snap_realm,
444 rebuild_item);
Xiubo, I think we just need to move this assignment of _realm above the
previous if block. I've made that change in-tree. Please take a look and
make sure it looks OK to you.
Look good to me.
Thanks.
445 last = build_snap_context(_realm, &realm_queue, dirty_realms);
446 dout("rebuild_snap_realms %llx %p, %s\n", _realm->ino, _realm,
447 last > 0 ? "is deferred" : !last ? "succeeded" : "failed");
448
449 list_for_each_entry(child, &_realm->children, child_item)
450 list_add_tail(&child->rebuild_item, &realm_queue);
451
452 /* last == 1 means need to build parent first */
453 if (last <= 0)
454 list_del(&_realm->rebuild_item);
455 }
456 }
457
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Thanks, KTR!