Lines Matching refs:inode
51 struct inode *winode = NULL; in ovl_setattr()
178 struct inode *inode = d_inode(dentry); in ovl_getattr() local
179 bool is_dir = S_ISDIR(inode->i_mode); in ovl_getattr()
194 generic_fill_statx_attr(inode, stat); in ovl_getattr()
298 vfsuid = make_vfsuid(idmap, i_user_ns(inode), stat->uid); in ovl_getattr()
299 vfsgid = make_vfsgid(idmap, i_user_ns(inode), stat->gid); in ovl_getattr()
307 struct inode *inode, int mask) in ovl_permission() argument
309 struct inode *upperinode = ovl_inode_upper(inode); in ovl_permission()
310 struct inode *realinode; in ovl_permission()
315 realinode = ovl_i_path_real(inode, &realpath); in ovl_permission()
325 err = generic_permission(idmap, inode, mask); in ovl_permission()
336 with_ovl_creds(inode->i_sb) in ovl_permission()
341 struct inode *inode, in ovl_get_link() argument
357 static void ovl_idmap_posix_acl(const struct inode *realinode, in ovl_idmap_posix_acl()
410 struct inode *realinode = d_inode(path->dentry); in ovl_get_acl_path()
451 struct inode *inode, int type, in do_ovl_get_acl() argument
454 struct inode *realinode; in do_ovl_get_acl()
459 realinode = ovl_i_path_real(inode, &realpath); in do_ovl_get_acl()
478 with_ovl_creds(inode->i_sb) in do_ovl_get_acl()
485 static int ovl_set_or_remove_acl(struct dentry *dentry, struct inode *inode, in ovl_set_or_remove_acl() argument
534 ovl_copyattr(inode); in ovl_set_or_remove_acl()
543 struct inode *inode = d_inode(dentry); in ovl_set_acl() local
545 struct inode *realinode = ovl_inode_real(inode); in ovl_set_acl()
551 if (type == ACL_TYPE_DEFAULT && !S_ISDIR(inode->i_mode)) in ovl_set_acl()
553 if (!inode_owner_or_capable(idmap, inode)) in ovl_set_acl()
560 if (unlikely(inode->i_mode & S_ISGID) && type == ACL_TYPE_ACCESS && in ovl_set_acl()
561 !in_group_or_capable(idmap, inode, in ovl_set_acl()
562 i_gid_into_vfsgid(idmap, inode))) { in ovl_set_acl()
570 return ovl_set_or_remove_acl(dentry, inode, acl, type); in ovl_set_acl()
574 int ovl_update_time(struct inode *inode, enum fs_update_time type, in ovl_update_time() argument
578 struct ovl_fs *ofs = OVL_FS(inode->i_sb); in ovl_update_time()
581 .dentry = ovl_upperdentry_dereference(OVL_I(inode)), in ovl_update_time()
588 inode_set_atime_to_ts(inode, in ovl_update_time()
595 static int ovl_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, in ovl_fiemap() argument
598 struct inode *realinode = ovl_inode_realdata(inode); in ovl_fiemap()
606 with_ovl_creds(inode->i_sb) in ovl_fiemap()
656 struct inode *inode = d_inode(dentry); in ovl_fileattr_set() local
669 with_ovl_creds(inode->i_sb) { in ovl_fileattr_set()
677 err = ovl_set_protattr(inode, upperpath.dentry, fa); in ovl_fileattr_set()
687 flags = ovl_inode_real(inode)->i_flags & OVL_COPY_I_FLAGS_MASK; in ovl_fileattr_set()
690 flags |= inode->i_flags & OVL_PROT_I_FLAGS_MASK; in ovl_fileattr_set()
691 inode_set_flags(inode, flags, OVL_COPY_I_FLAGS_MASK); in ovl_fileattr_set()
694 ovl_copyattr(inode); in ovl_fileattr_set()
701 static void ovl_fileattr_prot_flags(struct inode *inode, struct file_kattr *fa) in ovl_fileattr_prot_flags() argument
706 if (inode->i_flags & S_APPEND) { in ovl_fileattr_prot_flags()
710 if (inode->i_flags & S_IMMUTABLE) { in ovl_fileattr_prot_flags()
732 struct inode *inode = d_inode(dentry); in ovl_fileattr_get() local
738 with_ovl_creds(inode->i_sb) in ovl_fileattr_get()
740 ovl_fileattr_prot_flags(inode, fa); in ovl_fileattr_get()
821 static inline void ovl_lockdep_annotate_inode_mutex_key(struct inode *inode) in ovl_lockdep_annotate_inode_mutex_key() argument
828 int depth = inode->i_sb->s_stack_depth - 1; in ovl_lockdep_annotate_inode_mutex_key()
833 if (S_ISDIR(inode->i_mode)) in ovl_lockdep_annotate_inode_mutex_key()
834 lockdep_set_class(&inode->i_rwsem, &ovl_i_mutex_dir_key[depth]); in ovl_lockdep_annotate_inode_mutex_key()
836 lockdep_set_class(&inode->i_rwsem, &ovl_i_mutex_key[depth]); in ovl_lockdep_annotate_inode_mutex_key()
838 lockdep_set_class(&OVL_I(inode)->lock, &ovl_i_lock_key[depth]); in ovl_lockdep_annotate_inode_mutex_key()
842 static void ovl_next_ino(struct inode *inode) in ovl_next_ino() argument
844 struct ovl_fs *ofs = OVL_FS(inode->i_sb); in ovl_next_ino()
846 inode->i_ino = atomic_long_inc_return(&ofs->last_ino); in ovl_next_ino()
847 if (unlikely(!inode->i_ino)) in ovl_next_ino()
848 inode->i_ino = atomic_long_inc_return(&ofs->last_ino); in ovl_next_ino()
851 static void ovl_map_ino(struct inode *inode, unsigned long ino, int fsid) in ovl_map_ino() argument
853 struct ovl_fs *ofs = OVL_FS(inode->i_sb); in ovl_map_ino()
864 inode->i_ino = ino; in ovl_map_ino()
868 inode->i_ino |= (unsigned long)fsid << (xinoshift + 1); in ovl_map_ino()
881 if (S_ISDIR(inode->i_mode)) { in ovl_map_ino()
882 ovl_next_ino(inode); in ovl_map_ino()
884 inode->i_ino &= ~0UL >> xinobits; in ovl_map_ino()
885 inode->i_ino |= 1UL << xinoshift; in ovl_map_ino()
890 void ovl_inode_init(struct inode *inode, struct ovl_inode_params *oip, in ovl_inode_init() argument
893 struct inode *realinode; in ovl_inode_init()
894 struct ovl_inode *oi = OVL_I(inode); in ovl_inode_init()
901 realinode = ovl_inode_real(inode); in ovl_inode_init()
902 ovl_copyattr(inode); in ovl_inode_init()
903 ovl_copyflags(realinode, inode); in ovl_inode_init()
904 ovl_map_ino(inode, ino, fsid); in ovl_inode_init()
907 static void ovl_fill_inode(struct inode *inode, umode_t mode, dev_t rdev) in ovl_fill_inode() argument
909 inode->i_mode = mode; in ovl_fill_inode()
910 inode->i_flags |= S_NOCMTIME; in ovl_fill_inode()
912 inode->i_acl = inode->i_default_acl = ACL_DONT_CACHE; in ovl_fill_inode()
915 ovl_lockdep_annotate_inode_mutex_key(inode); in ovl_fill_inode()
919 inode->i_op = &ovl_file_inode_operations; in ovl_fill_inode()
920 inode->i_fop = &ovl_file_operations; in ovl_fill_inode()
921 inode->i_mapping->a_ops = &ovl_aops; in ovl_fill_inode()
925 inode->i_op = &ovl_dir_inode_operations; in ovl_fill_inode()
926 inode->i_fop = &ovl_dir_operations; in ovl_fill_inode()
930 inode->i_op = &ovl_symlink_inode_operations; in ovl_fill_inode()
934 inode->i_op = &ovl_special_inode_operations; in ovl_fill_inode()
935 init_special_inode(inode, mode, rdev); in ovl_fill_inode()
976 struct inode *inode = d_inode(dentry); in ovl_set_nlink_common() local
977 struct inode *realinode = d_inode(realdentry); in ovl_set_nlink_common()
982 (int) (inode->i_nlink - realinode->i_nlink)); in ovl_set_nlink_common()
987 return ovl_setxattr(OVL_FS(inode->i_sb), ovl_dentry_upper(dentry), in ovl_set_nlink_common()
1041 struct inode *ovl_new_inode(struct super_block *sb, umode_t mode, dev_t rdev) in ovl_new_inode()
1043 struct inode *inode; in ovl_new_inode() local
1045 inode = new_inode(sb); in ovl_new_inode()
1046 if (inode) in ovl_new_inode()
1047 ovl_fill_inode(inode, mode, rdev); in ovl_new_inode()
1049 return inode; in ovl_new_inode()
1052 static int ovl_inode_test(struct inode *inode, void *data) in ovl_inode_test() argument
1054 return inode->i_private == data; in ovl_inode_test()
1057 static int ovl_inode_set(struct inode *inode, void *data) in ovl_inode_set() argument
1059 inode->i_private = data; in ovl_inode_set()
1063 static bool ovl_verify_inode(struct inode *inode, struct dentry *lowerdentry, in ovl_verify_inode() argument
1072 if (S_ISDIR(inode->i_mode) && strict) { in ovl_verify_inode()
1074 if (!lowerdentry && ovl_inode_lower(inode)) in ovl_verify_inode()
1078 if (!upperdentry && ovl_inode_upper(inode)) in ovl_verify_inode()
1088 if (lowerdentry && ovl_inode_lower(inode) != d_inode(lowerdentry)) in ovl_verify_inode()
1095 if (upperdentry && ovl_inode_upper(inode) != d_inode(upperdentry)) in ovl_verify_inode()
1101 struct inode *ovl_lookup_inode(struct super_block *sb, struct dentry *real, in ovl_lookup_inode()
1104 struct inode *inode, *key = d_inode(real); in ovl_lookup_inode() local
1106 inode = ilookup5(sb, (unsigned long) key, ovl_inode_test, key); in ovl_lookup_inode()
1107 if (!inode) in ovl_lookup_inode()
1110 if (!ovl_verify_inode(inode, is_upper ? NULL : real, in ovl_lookup_inode()
1112 iput(inode); in ovl_lookup_inode()
1116 return inode; in ovl_lookup_inode()
1121 struct inode *key = d_inode(dir); in ovl_lookup_trap_inode()
1122 struct inode *trap; in ovl_lookup_trap_inode()
1141 struct inode *ovl_get_trap_inode(struct super_block *sb, struct dentry *dir) in ovl_get_trap_inode()
1143 struct inode *key = d_inode(dir); in ovl_get_trap_inode()
1144 struct inode *trap; in ovl_get_trap_inode()
1200 static struct inode *ovl_iget5(struct super_block *sb, struct inode *newinode, in ovl_iget5()
1201 struct inode *key) in ovl_iget5()
1209 struct inode *ovl_get_inode(struct super_block *sb, in ovl_get_inode()
1215 struct inode *realinode = upperdentry ? d_inode(upperdentry) : NULL; in ovl_get_inode()
1216 struct inode *inode; in ovl_get_inode() local
1238 struct inode *key = d_inode(bylower ? lowerdentry : in ovl_get_inode()
1242 inode = ovl_iget5(sb, oip->newinode, key); in ovl_get_inode()
1243 if (!inode) in ovl_get_inode()
1245 if (!(inode_state_read_once(inode) & I_NEW)) { in ovl_get_inode()
1250 if (!ovl_verify_inode(inode, lowerdentry, upperdentry, in ovl_get_inode()
1252 iput(inode); in ovl_get_inode()
1268 set_nlink(inode, nlink); in ovl_get_inode()
1272 inode = new_inode(sb); in ovl_get_inode()
1273 if (!inode) { in ovl_get_inode()
1280 ovl_fill_inode(inode, realinode->i_mode, realinode->i_rdev); in ovl_get_inode()
1281 ovl_inode_init(inode, oip, ino, fsid); in ovl_get_inode()
1282 WARN_ON_ONCE(!!IS_CASEFOLDED(inode) != ofs->casefold); in ovl_get_inode()
1285 ovl_set_flag(OVL_IMPURE, inode); in ovl_get_inode()
1288 ovl_set_flag(OVL_INDEX, inode); in ovl_get_inode()
1291 ovl_set_flag(OVL_CONST_INO, inode); in ovl_get_inode()
1297 ovl_set_flag(OVL_WHITEOUTS, inode); in ovl_get_inode()
1303 ovl_check_protattr(inode, upperdentry); in ovl_get_inode()
1305 if (inode_state_read_once(inode) & I_NEW) in ovl_get_inode()
1306 unlock_new_inode(inode); in ovl_get_inode()
1308 return inode; in ovl_get_inode()
1312 inode = ERR_PTR(err); in ovl_get_inode()