Re: [PATCH V2] ovl: fix mount fail because the upper doesn't have space

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Yunlong,

kernel test robot noticed the following build errors:

[auto build test ERROR on mszeredi-vfs/overlayfs-next]
[also build test ERROR on linus/master]
[cannot apply to mszeredi-vfs/next]
[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/Yunlong-Xing/ovl-fix-mount-fail-because-the-upper-doesn-t-have-space/20230719-165654
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git overlayfs-next
patch link:    https://lore.kernel.org/r/20230719085434.154834-1-yunlong.xing%40unisoc.com
patch subject: [PATCH V2] ovl: fix mount fail because the upper doesn't have space
config: arm64-randconfig-r026-20230718 (https://download.01.org/0day-ci/archive/20230719/202307192047.274jiOge-lkp@xxxxxxxxx/config)
compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a)
reproduce: (https://download.01.org/0day-ci/archive/20230719/202307192047.274jiOge-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202307192047.274jiOge-lkp@xxxxxxxxx/

All error/warnings (new ones prefixed by >>):

   fs/overlayfs/super.c:1192:11: warning: missing terminating '"' character [-Winvalid-pp-token]
    1192 |                 pr_warn("upper fs does not support RENAME_WHITEOUT (%i).\n,
         |                         ^
   fs/overlayfs/super.c:1193:7: warning: missing terminating '"' character [-Winvalid-pp-token]
    1193 |                         err");
         |                            ^
>> fs/overlayfs/super.c:1192:3: error: unterminated function-like macro invocation
    1192 |                 pr_warn("upper fs does not support RENAME_WHITEOUT (%i).\n,
         |                 ^
   include/linux/printk.h:507:9: note: macro 'pr_warn' defined here
     507 | #define pr_warn(fmt, ...) \
         |         ^
>> fs/overlayfs/super.c:2065:23: error: expected expression
    2065 | module_exit(ovl_exit);
         |                       ^
>> fs/overlayfs/super.c:2065:23: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]
   fs/overlayfs/super.c:1191:2: note: previous statement is here
    1191 |         if (!rename_whiteout)
         |         ^
>> fs/overlayfs/super.c:2065:23: error: expected '}'
    2065 | module_exit(ovl_exit);
         |                       ^
   fs/overlayfs/super.c:1138:1: note: to match this '{'
    1138 | {
         | ^
>> fs/overlayfs/super.c:1154:8: error: use of undeclared label 'out'
    1154 |                 goto out;
         |                      ^
   3 warnings and 4 errors generated.


vim +1192 fs/overlayfs/super.c

  1135	
  1136	static int ovl_make_workdir(struct super_block *sb, struct ovl_fs *ofs,
  1137				    const struct path *workpath)
  1138	{
  1139		struct vfsmount *mnt = ovl_upper_mnt(ofs);
  1140		struct dentry *workdir;
  1141		struct file *tmpfile;
  1142		bool rename_whiteout;
  1143		bool d_type;
  1144		int fh_type;
  1145		int err;
  1146	
  1147		err = mnt_want_write(mnt);
  1148		if (err)
  1149			return err;
  1150	
  1151		workdir = ovl_workdir_create(ofs, OVL_WORKDIR_NAME, false);
  1152		err = PTR_ERR(workdir);
  1153		if (IS_ERR_OR_NULL(workdir))
> 1154			goto out;
  1155	
  1156		ofs->workdir = workdir;
  1157	
  1158		err = ovl_setup_trap(sb, ofs->workdir, &ofs->workdir_trap, "workdir");
  1159		if (err)
  1160			goto out;
  1161	
  1162		/*
  1163		 * Upper should support d_type, else whiteouts are visible.  Given
  1164		 * workdir and upper are on same fs, we can do iterate_dir() on
  1165		 * workdir. This check requires successful creation of workdir in
  1166		 * previous step.
  1167		 */
  1168		err = ovl_check_d_type_supported(workpath);
  1169		if (err < 0)
  1170			goto out;
  1171	
  1172		d_type = err;
  1173		if (!d_type)
  1174			pr_warn("upper fs needs to support d_type.\n");
  1175	
  1176		/* Check if upper/work fs supports O_TMPFILE */
  1177		tmpfile = ovl_do_tmpfile(ofs, ofs->workdir, S_IFREG | 0);
  1178		ofs->tmpfile = !IS_ERR(tmpfile);
  1179		if (ofs->tmpfile)
  1180			fput(tmpfile);
  1181		else
  1182			pr_warn("upper fs does not support tmpfile.\n");
  1183	
  1184	
  1185		/* Check if upper/work fs supports RENAME_WHITEOUT */
  1186		err = ovl_check_rename_whiteout(ofs);
  1187		if (err < 0 && err != -ENOSPC)
  1188			goto out;
  1189	
  1190		rename_whiteout = err > 0;
> 1191		if (!rename_whiteout)
> 1192			pr_warn("upper fs does not support RENAME_WHITEOUT (%i).\n,
> 1193				err");
  1194	
  1195		/*
  1196		 * Check if upper/work fs supports (trusted|user).overlay.* xattr
  1197		 */
  1198		err = ovl_setxattr(ofs, ofs->workdir, OVL_XATTR_OPAQUE, "0", 1);
  1199		if (err) {
  1200			pr_warn("failed to set xattr on upper\n");
  1201			ofs->noxattr = true;
  1202			if (ovl_redirect_follow(ofs)) {
  1203				ofs->config.redirect_mode = OVL_REDIRECT_NOFOLLOW;
  1204				pr_warn("...falling back to redirect_dir=nofollow.\n");
  1205			}
  1206			if (ofs->config.metacopy) {
  1207				ofs->config.metacopy = false;
  1208				pr_warn("...falling back to metacopy=off.\n");
  1209			}
  1210			if (ofs->config.index) {
  1211				ofs->config.index = false;
  1212				pr_warn("...falling back to index=off.\n");
  1213			}
  1214			/*
  1215			 * xattr support is required for persistent st_ino.
  1216			 * Without persistent st_ino, xino=auto falls back to xino=off.
  1217			 */
  1218			if (ofs->config.xino == OVL_XINO_AUTO) {
  1219				ofs->config.xino = OVL_XINO_OFF;
  1220				pr_warn("...falling back to xino=off.\n");
  1221			}
  1222			if (err == -EPERM && !ofs->config.userxattr)
  1223				pr_info("try mounting with 'userxattr' option\n");
  1224			err = 0;
  1225		} else {
  1226			ovl_removexattr(ofs, ofs->workdir, OVL_XATTR_OPAQUE);
  1227		}
  1228	
  1229		/*
  1230		 * We allowed sub-optimal upper fs configuration and don't want to break
  1231		 * users over kernel upgrade, but we never allowed remote upper fs, so
  1232		 * we can enforce strict requirements for remote upper fs.
  1233		 */
  1234		if (ovl_dentry_remote(ofs->workdir) &&
  1235		    (!d_type || !rename_whiteout || ofs->noxattr)) {
  1236			pr_err("upper fs missing required features.\n");
  1237			err = -EINVAL;
  1238			goto out;
  1239		}
  1240	
  1241		/*
  1242		 * For volatile mount, create a incompat/volatile/dirty file to keep
  1243		 * track of it.
  1244		 */
  1245		if (ofs->config.ovl_volatile) {
  1246			err = ovl_create_volatile_dirty(ofs);
  1247			if (err < 0) {
  1248				pr_err("Failed to create volatile/dirty file.\n");
  1249				goto out;
  1250			}
  1251		}
  1252	
  1253		/* Check if upper/work fs supports file handles */
  1254		fh_type = ovl_can_decode_fh(ofs->workdir->d_sb);
  1255		if (ofs->config.index && !fh_type) {
  1256			ofs->config.index = false;
  1257			pr_warn("upper fs does not support file handles, falling back to index=off.\n");
  1258		}
  1259	
  1260		/* Check if upper fs has 32bit inode numbers */
  1261		if (fh_type != FILEID_INO32_GEN)
  1262			ofs->xino_mode = -1;
  1263	
  1264		/* NFS export of r/w mount depends on index */
  1265		if (ofs->config.nfs_export && !ofs->config.index) {
  1266			pr_warn("NFS export requires \"index=on\", falling back to nfs_export=off.\n");
  1267			ofs->config.nfs_export = false;
  1268		}
  1269	out:
  1270		mnt_drop_write(mnt);
  1271		return err;
  1272	}
  1273	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux