Lines Matching refs:kn
27 static struct kernfs_iattrs *__kernfs_iattrs(struct kernfs_node *kn, int alloc) in __kernfs_iattrs() argument
34 if (kn->iattr || !alloc) in __kernfs_iattrs()
37 kn->iattr = kmem_cache_zalloc(kernfs_iattrs_cache, GFP_KERNEL); in __kernfs_iattrs()
38 if (!kn->iattr) in __kernfs_iattrs()
42 kn->iattr->ia_uid = GLOBAL_ROOT_UID; in __kernfs_iattrs()
43 kn->iattr->ia_gid = GLOBAL_ROOT_GID; in __kernfs_iattrs()
45 ktime_get_real_ts64(&kn->iattr->ia_atime); in __kernfs_iattrs()
46 kn->iattr->ia_mtime = kn->iattr->ia_atime; in __kernfs_iattrs()
47 kn->iattr->ia_ctime = kn->iattr->ia_atime; in __kernfs_iattrs()
49 simple_xattrs_init(&kn->iattr->xattrs); in __kernfs_iattrs()
50 atomic_set(&kn->iattr->nr_user_xattrs, 0); in __kernfs_iattrs()
51 atomic_set(&kn->iattr->user_xattr_size, 0); in __kernfs_iattrs()
53 ret = kn->iattr; in __kernfs_iattrs()
58 static struct kernfs_iattrs *kernfs_iattrs(struct kernfs_node *kn) in kernfs_iattrs() argument
60 return __kernfs_iattrs(kn, 1); in kernfs_iattrs()
63 static struct kernfs_iattrs *kernfs_iattrs_noalloc(struct kernfs_node *kn) in kernfs_iattrs_noalloc() argument
65 return __kernfs_iattrs(kn, 0); in kernfs_iattrs_noalloc()
68 int __kernfs_setattr(struct kernfs_node *kn, const struct iattr *iattr) in __kernfs_setattr() argument
73 attrs = kernfs_iattrs(kn); in __kernfs_setattr()
88 kn->mode = iattr->ia_mode; in __kernfs_setattr()
99 int kernfs_setattr(struct kernfs_node *kn, const struct iattr *iattr) in kernfs_setattr() argument
102 struct kernfs_root *root = kernfs_root(kn); in kernfs_setattr()
105 ret = __kernfs_setattr(kn, iattr); in kernfs_setattr()
114 struct kernfs_node *kn = inode->i_private; in kernfs_iop_setattr() local
118 if (!kn) in kernfs_iop_setattr()
121 root = kernfs_root(kn); in kernfs_iop_setattr()
127 error = __kernfs_setattr(kn, iattr); in kernfs_iop_setattr()
141 struct kernfs_node *kn = kernfs_dentry_node(dentry); in kernfs_iop_listxattr() local
144 attrs = kernfs_iattrs(kn); in kernfs_iop_listxattr()
167 static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode) in kernfs_refresh_inode() argument
169 struct kernfs_iattrs *attrs = kn->iattr; in kernfs_refresh_inode()
171 inode->i_mode = kn->mode; in kernfs_refresh_inode()
179 if (kernfs_type(kn) == KERNFS_DIR) in kernfs_refresh_inode()
180 set_nlink(inode, kn->dir.subdirs + 2); in kernfs_refresh_inode()
188 struct kernfs_node *kn = inode->i_private; in kernfs_iop_getattr() local
189 struct kernfs_root *root = kernfs_root(kn); in kernfs_iop_getattr()
192 kernfs_refresh_inode(kn, inode); in kernfs_iop_getattr()
199 static void kernfs_init_inode(struct kernfs_node *kn, struct inode *inode) in kernfs_init_inode() argument
201 kernfs_get(kn); in kernfs_init_inode()
202 inode->i_private = kn; in kernfs_init_inode()
205 inode->i_generation = kernfs_gen(kn); in kernfs_init_inode()
207 set_default_inode_attr(inode, kn->mode); in kernfs_init_inode()
208 kernfs_refresh_inode(kn, inode); in kernfs_init_inode()
211 switch (kernfs_type(kn)) { in kernfs_init_inode()
215 if (kn->flags & KERNFS_EMPTY_DIR) in kernfs_init_inode()
219 inode->i_size = kn->attr.size; in kernfs_init_inode()
247 struct inode *kernfs_get_inode(struct super_block *sb, struct kernfs_node *kn) in kernfs_get_inode() argument
251 inode = iget_locked(sb, kernfs_ino(kn)); in kernfs_get_inode()
253 kernfs_init_inode(kn, inode); in kernfs_get_inode()
267 struct kernfs_node *kn = inode->i_private; in kernfs_evict_inode() local
271 kernfs_put(kn); in kernfs_evict_inode()
277 struct kernfs_node *kn; in kernfs_iop_permission() local
284 kn = inode->i_private; in kernfs_iop_permission()
285 root = kernfs_root(kn); in kernfs_iop_permission()
288 kernfs_refresh_inode(kn, inode); in kernfs_iop_permission()
295 int kernfs_xattr_get(struct kernfs_node *kn, const char *name, in kernfs_xattr_get() argument
298 struct kernfs_iattrs *attrs = kernfs_iattrs_noalloc(kn); in kernfs_xattr_get()
305 int kernfs_xattr_set(struct kernfs_node *kn, const char *name, in kernfs_xattr_set() argument
309 struct kernfs_iattrs *attrs = kernfs_iattrs(kn); in kernfs_xattr_set()
326 struct kernfs_node *kn = inode->i_private; in kernfs_vfs_xattr_get() local
328 return kernfs_xattr_get(kn, name, value, size); in kernfs_vfs_xattr_get()
338 struct kernfs_node *kn = inode->i_private; in kernfs_vfs_xattr_set() local
340 return kernfs_xattr_set(kn, name, value, size, flags); in kernfs_vfs_xattr_set()
343 static int kernfs_vfs_user_xattr_add(struct kernfs_node *kn, in kernfs_vfs_user_xattr_add() argument
348 atomic_t *sz = &kn->iattr->user_xattr_size; in kernfs_vfs_user_xattr_add()
349 atomic_t *nr = &kn->iattr->nr_user_xattrs; in kernfs_vfs_user_xattr_add()
382 static int kernfs_vfs_user_xattr_rm(struct kernfs_node *kn, in kernfs_vfs_user_xattr_rm() argument
387 atomic_t *sz = &kn->iattr->user_xattr_size; in kernfs_vfs_user_xattr_rm()
388 atomic_t *nr = &kn->iattr->nr_user_xattrs; in kernfs_vfs_user_xattr_rm()
411 struct kernfs_node *kn = inode->i_private; in kernfs_vfs_user_xattr_set() local
414 if (!(kernfs_root(kn)->flags & KERNFS_ROOT_SUPPORT_USER_XATTR)) in kernfs_vfs_user_xattr_set()
417 attrs = kernfs_iattrs(kn); in kernfs_vfs_user_xattr_set()
422 return kernfs_vfs_user_xattr_add(kn, full_name, &attrs->xattrs, in kernfs_vfs_user_xattr_set()
425 return kernfs_vfs_user_xattr_rm(kn, full_name, &attrs->xattrs, in kernfs_vfs_user_xattr_set()