Lines Matching refs:workdir
230 dput(ofs->workdir);
251 kfree(ofs->config.workdir);
335 return (!ovl_upper_mnt(ofs) || !ofs->workdir);
368 seq_show_option(m, "workdir", ofs->config.workdir);
444 {OPT_WORKDIR, "workdir=%s"},
541 kfree(config->workdir);
542 config->workdir = match_strdup(&args[0]);
543 if (!config->workdir)
614 if (config->workdir) {
615 pr_info("option \"workdir=%s\" is useless in a non-upper mount, ignore\n",
616 config->workdir);
617 kfree(config->workdir);
618 config->workdir = NULL;
761 * Try to remove POSIX ACL xattrs from workdir. We are good if:
799 ofs->config.workdir, name, -err);
918 static bool ovl_workdir_ok(struct dentry *workdir, struct dentry *upperdir)
922 if (workdir != upperdir) {
923 ok = (lock_rename(workdir, upperdir) == NULL);
924 unlock_rename(workdir, upperdir);
963 struct dentry *workdir = ovl_workdir(dentry);
975 if (!IS_POSIXACL(d_inode(workdir)))
1102 * Determine how we treat concurrent use of upperdir/workdir based on the
1110 pr_err("%s is in-use as upperdir/workdir of another mount, mount with '-o index=off' to override exclusive upperdir protection.\n",
1114 pr_warn("%s is in-use as upperdir/workdir of another mount, accessing files from both mounts will result in undefined behavior.\n",
1188 static int ovl_check_rename_whiteout(struct dentry *workdir)
1190 struct inode *dir = d_inode(workdir);
1199 temp = ovl_create_temp(workdir, OVL_CATTR(S_IFREG | 0));
1204 dest = ovl_lookup_temp(workdir);
1220 whiteout = lookup_one_len(name.name.name, workdir, name.name.len);
1262 * Creates $workdir/work/incompat/volatile/dirty file if it is not already
1287 struct dentry *temp, *workdir;
1297 workdir = ovl_workdir_create(ofs, OVL_WORKDIR_NAME, false);
1298 err = PTR_ERR(workdir);
1299 if (IS_ERR_OR_NULL(workdir))
1302 ofs->workdir = workdir;
1304 err = ovl_setup_trap(sb, ofs->workdir, &ofs->workdir_trap, "workdir");
1310 * workdir and upper are on same fs, we can do iterate_dir() on
1311 * workdir. This check requires successful creation of workdir in
1323 temp = ovl_do_tmpfile(ofs->workdir, S_IFREG | 0);
1332 err = ovl_check_rename_whiteout(ofs->workdir);
1343 err = ovl_do_setxattr(ofs, ofs->workdir, OVL_XATTR_OPAQUE, "0", 1);
1351 ovl_do_removexattr(ofs, ofs->workdir, OVL_XATTR_OPAQUE);
1359 if (ovl_dentry_remote(ofs->workdir) &&
1379 fh_type = ovl_can_decode_fh(ofs->workdir->d_sb);
1405 err = ovl_mount_dir(ofs->config.workdir, &workpath);
1411 pr_err("workdir and upperdir must reside under the same mount\n");
1415 pr_err("workdir and upperdir must be separate subtrees\n");
1424 err = ovl_report_in_use(ofs, "workdir");
1430 "workdir");
1461 /* index dir will act also as workdir */
1464 dput(ofs->workdir);
1465 ofs->workdir = NULL;
1471 ofs->workdir = dget(indexdir);
1628 * checking if it is in-use as upperdir/workdir of "another"
1630 * the upperdir/workdir is in fact in-use by our
1631 * upperdir/workdir.
1821 err = ovl_check_layer(sb, ofs, ofs->workbasedir, "workdir",
1955 if (!ofs->config.workdir) {
1956 pr_err("missing 'workdir'\n");
1978 if (!ofs->workdir)