Hi Shiyang, Thank you for the patch! Yet something to improve: [auto build test ERROR on xfs-linux/for-next] [also build test ERROR on dm/for-next linus/master v5.13-rc4] [cannot apply to hnaz-linux-mm/master next-20210603] [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] url: https://github.com/0day-ci/linux/commits/Shiyang-Ruan/fsdax-introduce-fs-query-to-support-reflink/20210604-092105 base: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next config: csky-randconfig-r014-20210604 (attached as .config) compiler: csky-linux-gcc (GCC) 9.3.0 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/0day-ci/linux/commit/8fc6cb02d396487fa3a77fb57f23dcdc978dd3e3 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Shiyang-Ruan/fsdax-introduce-fs-query-to-support-reflink/20210604-092105 git checkout 8fc6cb02d396487fa3a77fb57f23dcdc978dd3e3 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=csky If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): fs/xfs/xfs_super.c: In function 'xfs_open_devices': >> fs/xfs/xfs_super.c:400:2: error: implicit declaration of function 'dax_set_holder'; did you mean 'xas_set_order'? [-Werror=implicit-function-declaration] 400 | dax_set_holder(dax_ddev, mp->m_super, &fs_dax_holder_ops); | ^~~~~~~~~~~~~~ | xas_set_order cc1: some warnings being treated as errors vim +400 fs/xfs/xfs_super.c 379 380 /* 381 * The file system configurations are: 382 * (1) device (partition) with data and internal log 383 * (2) logical volume with data and log subvolumes. 384 * (3) logical volume with data, log, and realtime subvolumes. 385 * 386 * We only have to handle opening the log and realtime volumes here if 387 * they are present. The data subvolume has already been opened by 388 * get_sb_bdev() and is stored in sb->s_bdev. 389 */ 390 STATIC int 391 xfs_open_devices( 392 struct xfs_mount *mp) 393 { 394 struct block_device *ddev = mp->m_super->s_bdev; 395 struct dax_device *dax_ddev = fs_dax_get_by_bdev(ddev); 396 struct dax_device *dax_logdev = NULL, *dax_rtdev = NULL; 397 struct block_device *logdev = NULL, *rtdev = NULL; 398 int error; 399 > 400 dax_set_holder(dax_ddev, mp->m_super, &fs_dax_holder_ops); 401 /* 402 * Open real time and log devices - order is important. 403 */ 404 if (mp->m_logname) { 405 error = xfs_blkdev_get(mp, mp->m_logname, &logdev); 406 if (error) 407 goto out; 408 dax_logdev = fs_dax_get_by_bdev(logdev); 409 if (dax_logdev != dax_ddev) 410 dax_set_holder(dax_logdev, mp->m_super, 411 &fs_dax_holder_ops); 412 } 413 414 if (mp->m_rtname) { 415 error = xfs_blkdev_get(mp, mp->m_rtname, &rtdev); 416 if (error) 417 goto out_close_logdev; 418 419 if (rtdev == ddev || rtdev == logdev) { 420 xfs_warn(mp, 421 "Cannot mount filesystem with identical rtdev and ddev/logdev."); 422 error = -EINVAL; 423 goto out_close_rtdev; 424 } 425 dax_rtdev = fs_dax_get_by_bdev(rtdev); 426 dax_set_holder(dax_rtdev, mp->m_super, &fs_dax_holder_ops); 427 } 428 429 /* 430 * Setup xfs_mount buffer target pointers 431 */ 432 error = -ENOMEM; 433 mp->m_ddev_targp = xfs_alloc_buftarg(mp, ddev, dax_ddev); 434 if (!mp->m_ddev_targp) 435 goto out_close_rtdev; 436 437 if (rtdev) { 438 mp->m_rtdev_targp = xfs_alloc_buftarg(mp, rtdev, dax_rtdev); 439 if (!mp->m_rtdev_targp) 440 goto out_free_ddev_targ; 441 } 442 443 if (logdev && logdev != ddev) { 444 mp->m_logdev_targp = xfs_alloc_buftarg(mp, logdev, dax_logdev); 445 if (!mp->m_logdev_targp) 446 goto out_free_rtdev_targ; 447 } else { 448 mp->m_logdev_targp = mp->m_ddev_targp; 449 } 450 451 return 0; 452 453 out_free_rtdev_targ: 454 if (mp->m_rtdev_targp) 455 xfs_free_buftarg(mp->m_rtdev_targp); 456 out_free_ddev_targ: 457 xfs_free_buftarg(mp->m_ddev_targp); 458 out_close_rtdev: 459 xfs_blkdev_put(rtdev); 460 fs_put_dax(dax_rtdev); 461 out_close_logdev: 462 if (logdev && logdev != ddev) { 463 xfs_blkdev_put(logdev); 464 fs_put_dax(dax_logdev); 465 } 466 out: 467 fs_put_dax(dax_ddev); 468 return error; 469 } 470 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org