Lines Matching refs:dentry
21 int ovl_setattr(struct mnt_idmap *idmap, struct dentry *dentry, in ovl_setattr() argument
25 struct ovl_fs *ofs = OVL_FS(dentry->d_sb); in ovl_setattr()
27 struct dentry *upperdentry; in ovl_setattr()
30 err = setattr_prepare(&nop_mnt_idmap, dentry, attr); in ovl_setattr()
40 err = ovl_copy_up(dentry); in ovl_setattr()
42 err = ovl_copy_up_with_data(dentry); in ovl_setattr()
46 upperdentry = ovl_dentry_upper(dentry); in ovl_setattr()
76 err = ovl_want_write(dentry); in ovl_setattr()
81 old_cred = ovl_override_creds(dentry->d_sb); in ovl_setattr()
85 ovl_copyattr(dentry->d_inode); in ovl_setattr()
87 ovl_drop_write(dentry); in ovl_setattr()
97 static void ovl_map_dev_ino(struct dentry *dentry, struct kstat *stat, int fsid) in ovl_map_dev_ino() argument
99 struct ovl_fs *ofs = OVL_FS(dentry->d_sb); in ovl_map_dev_ino()
110 stat->dev = dentry->d_sb->s_dev; in ovl_map_dev_ino()
124 stat->dev = dentry->d_sb->s_dev; in ovl_map_dev_ino()
128 dentry, stat->ino, xinobits); in ovl_map_dev_ino()
133 if (S_ISDIR(dentry->d_inode->i_mode)) { in ovl_map_dev_ino()
143 stat->dev = dentry->d_sb->s_dev; in ovl_map_dev_ino()
144 stat->ino = dentry->d_inode->i_ino; in ovl_map_dev_ino()
159 struct dentry *dentry = path->dentry; in ovl_getattr() local
163 struct inode *inode = d_inode(dentry); in ovl_getattr()
169 metacopy_blocks = ovl_is_metacopy_dentry(dentry); in ovl_getattr()
171 type = ovl_path_real(dentry, &realpath); in ovl_getattr()
172 old_cred = ovl_override_creds(dentry->d_sb); in ovl_getattr()
189 if (!is_dir || ovl_same_dev(OVL_FS(dentry->d_sb))) { in ovl_getattr()
191 fsid = ovl_layer_lower(dentry)->fsid; in ovl_getattr()
197 ovl_path_lower(dentry, &realpath); in ovl_getattr()
218 if (ovl_test_flag(OVL_INDEX, d_inode(dentry)) || in ovl_getattr()
219 (!ovl_verify_lower(dentry->d_sb) && in ovl_getattr()
221 fsid = ovl_layer_lower(dentry)->fsid; in ovl_getattr()
233 realpath.dentry == ovl_dentry_lowerdata(dentry)) { in ovl_getattr()
249 ovl_path_lowerdata(dentry, &realpath); in ovl_getattr()
250 if (realpath.dentry) { in ovl_getattr()
263 ovl_map_dev_ino(dentry, stat, fsid); in ovl_getattr()
279 if (!is_dir && ovl_test_flag(OVL_INDEX, d_inode(dentry))) in ovl_getattr()
280 stat->nlink = dentry->d_inode->i_nlink; in ovl_getattr()
325 static const char *ovl_get_link(struct dentry *dentry, in ovl_get_link() argument
332 if (!dentry) in ovl_get_link()
335 old_cred = ovl_override_creds(dentry->d_sb); in ovl_get_link()
336 p = vfs_get_link(ovl_dentry_real(dentry), done); in ovl_get_link()
400 struct inode *realinode = d_inode(path->dentry); in ovl_get_acl_path()
407 real_acl = vfs_get_acl(idmap, path->dentry, acl_name); in ovl_get_acl_path()
478 static int ovl_set_or_remove_acl(struct dentry *dentry, struct inode *inode, in ovl_set_or_remove_acl() argument
485 struct ovl_fs *ofs = OVL_FS(dentry->d_sb); in ovl_set_or_remove_acl()
486 struct dentry *upperdentry = ovl_dentry_upper(dentry); in ovl_set_or_remove_acl()
487 struct dentry *realdentry = upperdentry ?: ovl_dentry_lower(dentry); in ovl_set_or_remove_acl()
497 ovl_path_lower(dentry, &realpath); in ovl_set_or_remove_acl()
498 old_cred = ovl_override_creds(dentry->d_sb); in ovl_set_or_remove_acl()
510 err = ovl_copy_up(dentry); in ovl_set_or_remove_acl()
514 realdentry = ovl_dentry_upper(dentry); in ovl_set_or_remove_acl()
517 err = ovl_want_write(dentry); in ovl_set_or_remove_acl()
521 old_cred = ovl_override_creds(dentry->d_sb); in ovl_set_or_remove_acl()
527 ovl_drop_write(dentry); in ovl_set_or_remove_acl()
535 int ovl_set_acl(struct mnt_idmap *idmap, struct dentry *dentry, in ovl_set_acl() argument
539 struct inode *inode = d_inode(dentry); in ovl_set_acl()
540 struct dentry *workdir = ovl_workdir(dentry); in ovl_set_acl()
561 err = ovl_setattr(&nop_mnt_idmap, dentry, &iattr); in ovl_set_acl()
566 return ovl_set_or_remove_acl(dentry, inode, acl, type); in ovl_set_acl()
576 .dentry = ovl_upperdentry_dereference(OVL_I(inode)), in ovl_update_time()
579 if (upperpath.dentry) { in ovl_update_time()
582 inode_get_atime(d_inode(upperpath.dentry))); in ovl_update_time()
648 return vfs_fileattr_set(mnt_idmap(realpath->mnt), realpath->dentry, fa); in ovl_real_fileattr_set()
652 struct dentry *dentry, struct file_kattr *fa) in ovl_fileattr_set() argument
654 struct inode *inode = d_inode(dentry); in ovl_fileattr_set()
660 err = ovl_copy_up(dentry); in ovl_fileattr_set()
662 ovl_path_real(dentry, &upperpath); in ovl_fileattr_set()
664 err = ovl_want_write(dentry); in ovl_fileattr_set()
676 err = ovl_set_protattr(inode, upperpath.dentry, fa); in ovl_fileattr_set()
680 ovl_drop_write(dentry); in ovl_fileattr_set()
723 return vfs_fileattr_get(realpath->dentry, fa); in ovl_real_fileattr_get()
726 int ovl_fileattr_get(struct dentry *dentry, struct file_kattr *fa) in ovl_fileattr_get() argument
728 struct inode *inode = d_inode(dentry); in ovl_fileattr_get()
733 ovl_path_real(dentry, &realpath); in ovl_fileattr_get()
971 static int ovl_set_nlink_common(struct dentry *dentry, in ovl_set_nlink_common() argument
972 struct dentry *realdentry, const char *format) in ovl_set_nlink_common()
974 struct inode *inode = d_inode(dentry); in ovl_set_nlink_common()
985 return ovl_setxattr(OVL_FS(inode->i_sb), ovl_dentry_upper(dentry), in ovl_set_nlink_common()
989 int ovl_set_nlink_upper(struct dentry *dentry) in ovl_set_nlink_upper() argument
991 return ovl_set_nlink_common(dentry, ovl_dentry_upper(dentry), "U%+i"); in ovl_set_nlink_upper()
994 int ovl_set_nlink_lower(struct dentry *dentry) in ovl_set_nlink_lower() argument
996 return ovl_set_nlink_common(dentry, ovl_dentry_lower(dentry), "L%+i"); in ovl_set_nlink_lower()
999 unsigned int ovl_get_nlink(struct ovl_fs *ofs, struct dentry *lowerdentry, in ovl_get_nlink()
1000 struct dentry *upperdentry, in ovl_get_nlink()
1061 static bool ovl_verify_inode(struct inode *inode, struct dentry *lowerdentry, in ovl_verify_inode()
1062 struct dentry *upperdentry, bool strict) in ovl_verify_inode()
1099 struct inode *ovl_lookup_inode(struct super_block *sb, struct dentry *real, in ovl_lookup_inode()
1117 bool ovl_lookup_trap_inode(struct super_block *sb, struct dentry *dir) in ovl_lookup_trap_inode()
1139 struct inode *ovl_get_trap_inode(struct super_block *sb, struct dentry *dir) in ovl_get_trap_inode()
1168 static bool ovl_hash_bylower(struct super_block *sb, struct dentry *upper, in ovl_hash_bylower()
1169 struct dentry *lower, bool index) in ovl_hash_bylower()
1211 struct dentry *upperdentry = oip->upperdentry; in ovl_get_inode()
1215 struct dentry *lowerdentry = lowerpath ? lowerpath->dentry : NULL; in ovl_get_inode()
1217 .dentry = upperdentry ?: lowerdentry, in ovl_get_inode()