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()
29 err = setattr_prepare(&nop_mnt_idmap, dentry, attr); in ovl_setattr()
39 err = ovl_copy_up(dentry); in ovl_setattr()
41 err = ovl_copy_up_with_data(dentry); in ovl_setattr()
45 upperdentry = ovl_dentry_upper(dentry); in ovl_setattr()
75 err = ovl_want_write(dentry); in ovl_setattr()
80 with_ovl_creds(dentry->d_sb) in ovl_setattr()
83 ovl_copyattr(dentry->d_inode); in ovl_setattr()
85 ovl_drop_write(dentry); in ovl_setattr()
95 static void ovl_map_dev_ino(struct dentry *dentry, struct kstat *stat, int fsid) in ovl_map_dev_ino() argument
97 struct ovl_fs *ofs = OVL_FS(dentry->d_sb); in ovl_map_dev_ino()
108 stat->dev = dentry->d_sb->s_dev; in ovl_map_dev_ino()
122 stat->dev = dentry->d_sb->s_dev; in ovl_map_dev_ino()
126 dentry, stat->ino, xinobits); in ovl_map_dev_ino()
131 if (S_ISDIR(dentry->d_inode->i_mode)) { in ovl_map_dev_ino()
141 stat->dev = dentry->d_sb->s_dev; in ovl_map_dev_ino()
142 stat->ino = dentry->d_inode->i_ino; in ovl_map_dev_ino()
166 struct dentry *dentry = path->dentry; in ovl_getattr() local
167 struct super_block *sb = dentry->d_sb; in ovl_getattr()
170 struct inode *inode = d_inode(dentry); in ovl_getattr()
176 metacopy_blocks = ovl_is_metacopy_dentry(dentry); in ovl_getattr()
178 type = ovl_path_real(dentry, &realpath); in ovl_getattr()
195 if (!is_dir || ovl_same_dev(OVL_FS(dentry->d_sb))) { in ovl_getattr()
197 fsid = ovl_layer_lower(dentry)->fsid; in ovl_getattr()
203 ovl_path_lower(dentry, &realpath); in ovl_getattr()
223 if (ovl_test_flag(OVL_INDEX, d_inode(dentry)) || in ovl_getattr()
224 (!ovl_verify_lower(dentry->d_sb) && in ovl_getattr()
226 fsid = ovl_layer_lower(dentry)->fsid; in ovl_getattr()
238 realpath.dentry == ovl_dentry_lowerdata(dentry)) { in ovl_getattr()
254 ovl_path_lowerdata(dentry, &realpath); in ovl_getattr()
255 if (realpath.dentry) { in ovl_getattr()
268 ovl_map_dev_ino(dentry, stat, fsid); in ovl_getattr()
284 if (!is_dir && ovl_test_flag(OVL_INDEX, d_inode(dentry))) in ovl_getattr()
285 stat->nlink = dentry->d_inode->i_nlink; in ovl_getattr()
324 static const char *ovl_get_link(struct dentry *dentry, in ovl_get_link() argument
328 if (!dentry) in ovl_get_link()
331 with_ovl_creds(dentry->d_sb) in ovl_get_link()
332 return vfs_get_link(ovl_dentry_real(dentry), done); in ovl_get_link()
394 struct inode *realinode = d_inode(path->dentry); in ovl_get_acl_path()
401 real_acl = vfs_get_acl(idmap, path->dentry, acl_name); in ovl_get_acl_path()
469 static int ovl_set_or_remove_acl(struct dentry *dentry, struct inode *inode, in ovl_set_or_remove_acl() argument
475 struct ovl_fs *ofs = OVL_FS(dentry->d_sb); in ovl_set_or_remove_acl()
476 struct dentry *upperdentry = ovl_dentry_upper(dentry); in ovl_set_or_remove_acl()
477 struct dentry *realdentry = upperdentry ?: ovl_dentry_lower(dentry); in ovl_set_or_remove_acl()
487 ovl_path_lower(dentry, &realpath); in ovl_set_or_remove_acl()
488 with_ovl_creds(dentry->d_sb) in ovl_set_or_remove_acl()
498 err = ovl_copy_up(dentry); in ovl_set_or_remove_acl()
502 realdentry = ovl_dentry_upper(dentry); in ovl_set_or_remove_acl()
505 err = ovl_want_write(dentry); in ovl_set_or_remove_acl()
509 with_ovl_creds(dentry->d_sb) { in ovl_set_or_remove_acl()
515 ovl_drop_write(dentry); in ovl_set_or_remove_acl()
523 int ovl_set_acl(struct mnt_idmap *idmap, struct dentry *dentry, in ovl_set_acl() argument
527 struct inode *inode = d_inode(dentry); in ovl_set_acl()
528 struct dentry *workdir = ovl_workdir(dentry); in ovl_set_acl()
549 err = ovl_setattr(&nop_mnt_idmap, dentry, &iattr); in ovl_set_acl()
554 return ovl_set_or_remove_acl(dentry, inode, acl, type); in ovl_set_acl()
564 .dentry = ovl_upperdentry_dereference(OVL_I(inode)), in ovl_update_time()
567 if (upperpath.dentry) { in ovl_update_time()
570 inode_get_atime(d_inode(upperpath.dentry))); in ovl_update_time()
631 return vfs_fileattr_set(mnt_idmap(realpath->mnt), realpath->dentry, fa); in ovl_real_fileattr_set()
635 struct dentry *dentry, struct file_kattr *fa) in ovl_fileattr_set() argument
637 struct inode *inode = d_inode(dentry); in ovl_fileattr_set()
642 err = ovl_copy_up(dentry); in ovl_fileattr_set()
644 ovl_path_real(dentry, &upperpath); in ovl_fileattr_set()
646 err = ovl_want_write(dentry); in ovl_fileattr_set()
658 err = ovl_set_protattr(inode, upperpath.dentry, fa); in ovl_fileattr_set()
662 ovl_drop_write(dentry); in ovl_fileattr_set()
705 err = vfs_fileattr_get(realpath->dentry, fa); in ovl_real_fileattr_get()
711 int ovl_fileattr_get(struct dentry *dentry, struct file_kattr *fa) in ovl_fileattr_get() argument
713 struct inode *inode = d_inode(dentry); in ovl_fileattr_get()
717 ovl_path_real(dentry, &realpath); in ovl_fileattr_get()
954 static int ovl_set_nlink_common(struct dentry *dentry, in ovl_set_nlink_common() argument
955 struct dentry *realdentry, const char *format) in ovl_set_nlink_common()
957 struct inode *inode = d_inode(dentry); in ovl_set_nlink_common()
968 return ovl_setxattr(OVL_FS(inode->i_sb), ovl_dentry_upper(dentry), in ovl_set_nlink_common()
972 int ovl_set_nlink_upper(struct dentry *dentry) in ovl_set_nlink_upper() argument
974 return ovl_set_nlink_common(dentry, ovl_dentry_upper(dentry), "U%+i"); in ovl_set_nlink_upper()
977 int ovl_set_nlink_lower(struct dentry *dentry) in ovl_set_nlink_lower() argument
979 return ovl_set_nlink_common(dentry, ovl_dentry_lower(dentry), "L%+i"); in ovl_set_nlink_lower()
982 unsigned int ovl_get_nlink(struct ovl_fs *ofs, struct dentry *lowerdentry, in ovl_get_nlink()
983 struct dentry *upperdentry, in ovl_get_nlink()
1044 static bool ovl_verify_inode(struct inode *inode, struct dentry *lowerdentry, in ovl_verify_inode()
1045 struct dentry *upperdentry, bool strict) in ovl_verify_inode()
1082 struct inode *ovl_lookup_inode(struct super_block *sb, struct dentry *real, in ovl_lookup_inode()
1100 bool ovl_lookup_trap_inode(struct super_block *sb, struct dentry *dir) in ovl_lookup_trap_inode()
1122 struct inode *ovl_get_trap_inode(struct super_block *sb, struct dentry *dir) in ovl_get_trap_inode()
1151 static bool ovl_hash_bylower(struct super_block *sb, struct dentry *upper, in ovl_hash_bylower()
1152 struct dentry *lower, bool index) in ovl_hash_bylower()
1194 struct dentry *upperdentry = oip->upperdentry; in ovl_get_inode()
1198 struct dentry *lowerdentry = lowerpath ? lowerpath->dentry : NULL; in ovl_get_inode()
1200 .dentry = upperdentry ?: lowerdentry, in ovl_get_inode()