Lines Matching refs:ofs
26 int ovl_cleanup(struct ovl_fs *ofs, struct inode *wdir, struct dentry *wdentry)
32 err = ovl_do_rmdir(ofs, wdir, wdentry);
34 err = ovl_do_unlink(ofs, wdir, wdentry);
45 struct dentry *ovl_lookup_temp(struct ovl_fs *ofs, struct dentry *workdir)
54 temp = ovl_lookup_upper(ofs, name, workdir, strlen(name));
65 static struct dentry *ovl_whiteout(struct ovl_fs *ofs)
69 struct dentry *workdir = ofs->workdir;
72 if (!ofs->whiteout) {
73 whiteout = ovl_lookup_temp(ofs, workdir);
77 err = ovl_do_whiteout(ofs, wdir, whiteout);
83 ofs->whiteout = whiteout;
86 if (!ofs->no_shared_whiteout) {
87 whiteout = ovl_lookup_temp(ofs, workdir);
91 err = ovl_do_link(ofs, ofs->whiteout, wdir, whiteout);
97 ofs->whiteout->d_inode->i_nlink, err);
98 ofs->no_shared_whiteout = true;
102 whiteout = ofs->whiteout;
103 ofs->whiteout = NULL;
109 int ovl_cleanup_and_whiteout(struct ovl_fs *ofs, struct inode *dir,
112 struct inode *wdir = ofs->workdir->d_inode;
117 whiteout = ovl_whiteout(ofs);
125 err = ovl_do_rename(ofs, wdir, whiteout, dir, dentry, flags);
129 ovl_cleanup(ofs, wdir, dentry);
136 ovl_cleanup(ofs, wdir, whiteout);
140 int ovl_mkdir_real(struct ovl_fs *ofs, struct inode *dir,
146 err = ovl_do_mkdir(ofs, dir, dentry, mode);
158 d = ovl_lookup_upper(ofs, dentry->d_name.name, dentry->d_parent,
171 struct dentry *ovl_create_real(struct ovl_fs *ofs, struct inode *dir,
184 err = ovl_do_link(ofs, attr->hardlink, dir, newdentry);
188 err = ovl_do_create(ofs, dir, newdentry, attr->mode);
193 err = ovl_mkdir_real(ofs, dir, &newdentry, attr->mode);
200 err = ovl_do_mknod(ofs, dir, newdentry, attr->mode,
205 err = ovl_do_symlink(ofs, dir, newdentry, attr->link);
227 struct dentry *ovl_create_temp(struct ovl_fs *ofs, struct dentry *workdir,
230 return ovl_create_real(ofs, d_inode(workdir),
231 ovl_lookup_temp(ofs, workdir), attr);
237 struct ovl_fs *ofs = OVL_FS(dentry->d_sb);
240 err = ovl_check_setxattr(ofs, upper, OVL_XATTR_OPAQUE, "y", 1, xerr);
324 struct ovl_fs *ofs = OVL_FS(dentry->d_sb);
334 newdentry = ovl_create_real(ofs, udir,
335 ovl_lookup_upper(ofs, dentry->d_name.name,
343 !ovl_allow_offline_changes(ofs)) {
356 ovl_cleanup(ofs, udir, newdentry);
364 struct ovl_fs *ofs = OVL_FS(dentry->d_sb);
395 opaquedir = ovl_create_temp(ofs, workdir, OVL_CATTR(stat.mode));
409 err = ovl_set_attr(ofs, opaquedir, &stat);
414 err = ovl_do_rename(ofs, wdir, opaquedir, udir, upper, RENAME_EXCHANGE);
418 ovl_cleanup_whiteouts(ofs, upper, list);
419 ovl_cleanup(ofs, wdir, upper);
428 ovl_cleanup(ofs, wdir, opaquedir);
436 static int ovl_set_upper_acl(struct ovl_fs *ofs, struct dentry *upperdentry,
442 return ovl_do_set_acl(ofs, upperdentry, acl_name, acl);
448 struct ovl_fs *ofs = OVL_FS(dentry->d_sb);
473 upper = ovl_lookup_upper(ofs, dentry->d_name.name, upperdir,
483 newdentry = ovl_create_temp(ofs, workdir, cattr);
499 err = ovl_do_notify_change(ofs, newdentry, &attr);
505 err = ovl_set_upper_acl(ofs, newdentry,
510 err = ovl_set_upper_acl(ofs, newdentry,
521 err = ovl_do_rename(ofs, wdir, newdentry, udir, upper,
526 ovl_cleanup(ofs, wdir, upper);
528 err = ovl_do_rename(ofs, wdir, newdentry, udir, upper, 0);
534 ovl_cleanup(ofs, udir, newdentry);
549 ovl_cleanup(ofs, wdir, newdentry);
749 struct ovl_fs *ofs = OVL_FS(dentry->d_sb);
770 upper = ovl_lookup_upper(ofs, dentry->d_name.name, upperdir,
783 err = ovl_cleanup_and_whiteout(ofs, d_inode(upperdir), upper);
803 struct ovl_fs *ofs = OVL_FS(dentry->d_sb);
818 upper = ovl_lookup_upper(ofs, dentry->d_name.name, upperdir,
830 err = ovl_do_rmdir(ofs, dir, upper);
832 err = ovl_do_unlink(ofs, dir, upper);
1049 struct ovl_fs *ofs = OVL_FS(dentry->d_sb);
1060 err = ovl_check_setxattr(ofs, ovl_dentry_upper(dentry),
1097 struct ovl_fs *ofs = OVL_FS(old->d_sb);
1192 olddentry = ovl_lookup_upper(ofs, old->d_name.name, old_upperdir,
1202 newdentry = ovl_lookup_upper(ofs, new->d_name.name, new_upperdir,
1254 err = ovl_do_rename(ofs, old_upperdir->d_inode, olddentry,
1260 ovl_cleanup(ofs, old_upperdir->d_inode, newdentry);