Lines Matching refs:kn
33 static struct kernfs_iattrs *__kernfs_iattrs(struct kernfs_node *kn, int alloc) in __kernfs_iattrs() argument
40 if (kn->iattr || !alloc) in __kernfs_iattrs()
43 kn->iattr = kmem_cache_zalloc(kernfs_iattrs_cache, GFP_KERNEL); in __kernfs_iattrs()
44 if (!kn->iattr) in __kernfs_iattrs()
48 kn->iattr->ia_uid = GLOBAL_ROOT_UID; in __kernfs_iattrs()
49 kn->iattr->ia_gid = GLOBAL_ROOT_GID; in __kernfs_iattrs()
51 ktime_get_real_ts64(&kn->iattr->ia_atime); in __kernfs_iattrs()
52 kn->iattr->ia_mtime = kn->iattr->ia_atime; in __kernfs_iattrs()
53 kn->iattr->ia_ctime = kn->iattr->ia_atime; in __kernfs_iattrs()
55 simple_xattrs_init(&kn->iattr->xattrs); in __kernfs_iattrs()
56 atomic_set(&kn->iattr->nr_user_xattrs, 0); in __kernfs_iattrs()
57 atomic_set(&kn->iattr->user_xattr_size, 0); in __kernfs_iattrs()
59 ret = kn->iattr; in __kernfs_iattrs()
64 static struct kernfs_iattrs *kernfs_iattrs(struct kernfs_node *kn) in kernfs_iattrs() argument
66 return __kernfs_iattrs(kn, 1); in kernfs_iattrs()
69 static struct kernfs_iattrs *kernfs_iattrs_noalloc(struct kernfs_node *kn) in kernfs_iattrs_noalloc() argument
71 return __kernfs_iattrs(kn, 0); in kernfs_iattrs_noalloc()
74 int __kernfs_setattr(struct kernfs_node *kn, const struct iattr *iattr) in __kernfs_setattr() argument
79 attrs = kernfs_iattrs(kn); in __kernfs_setattr()
94 kn->mode = iattr->ia_mode; in __kernfs_setattr()
105 int kernfs_setattr(struct kernfs_node *kn, const struct iattr *iattr) in kernfs_setattr() argument
110 ret = __kernfs_setattr(kn, iattr); in kernfs_setattr()
118 struct kernfs_node *kn = inode->i_private; in kernfs_iop_setattr() local
121 if (!kn) in kernfs_iop_setattr()
129 error = __kernfs_setattr(kn, iattr); in kernfs_iop_setattr()
143 struct kernfs_node *kn = kernfs_dentry_node(dentry); in kernfs_iop_listxattr() local
146 attrs = kernfs_iattrs(kn); in kernfs_iop_listxattr()
170 static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode) in kernfs_refresh_inode() argument
172 struct kernfs_iattrs *attrs = kn->iattr; in kernfs_refresh_inode()
174 inode->i_mode = kn->mode; in kernfs_refresh_inode()
182 if (kernfs_type(kn) == KERNFS_DIR) in kernfs_refresh_inode()
183 set_nlink(inode, kn->dir.subdirs + 2); in kernfs_refresh_inode()
190 struct kernfs_node *kn = inode->i_private; in kernfs_iop_getattr() local
193 kernfs_refresh_inode(kn, inode); in kernfs_iop_getattr()
200 static void kernfs_init_inode(struct kernfs_node *kn, struct inode *inode) in kernfs_init_inode() argument
202 kernfs_get(kn); in kernfs_init_inode()
203 inode->i_private = kn; in kernfs_init_inode()
206 inode->i_generation = kernfs_gen(kn); in kernfs_init_inode()
208 set_default_inode_attr(inode, kn->mode); in kernfs_init_inode()
209 kernfs_refresh_inode(kn, inode); in kernfs_init_inode()
212 switch (kernfs_type(kn)) { in kernfs_init_inode()
216 if (kn->flags & KERNFS_EMPTY_DIR) in kernfs_init_inode()
220 inode->i_size = kn->attr.size; in kernfs_init_inode()
248 struct inode *kernfs_get_inode(struct super_block *sb, struct kernfs_node *kn) in kernfs_get_inode() argument
252 inode = iget_locked(sb, kernfs_ino(kn)); in kernfs_get_inode()
254 kernfs_init_inode(kn, inode); in kernfs_get_inode()
268 struct kernfs_node *kn = inode->i_private; in kernfs_evict_inode() local
272 kernfs_put(kn); in kernfs_evict_inode()
277 struct kernfs_node *kn; in kernfs_iop_permission() local
282 kn = inode->i_private; in kernfs_iop_permission()
285 kernfs_refresh_inode(kn, inode); in kernfs_iop_permission()
291 int kernfs_xattr_get(struct kernfs_node *kn, const char *name, in kernfs_xattr_get() argument
294 struct kernfs_iattrs *attrs = kernfs_iattrs_noalloc(kn); in kernfs_xattr_get()
301 int kernfs_xattr_set(struct kernfs_node *kn, const char *name, in kernfs_xattr_set() argument
304 struct kernfs_iattrs *attrs = kernfs_iattrs(kn); in kernfs_xattr_set()
317 struct kernfs_node *kn = inode->i_private; in kernfs_vfs_xattr_get() local
319 return kernfs_xattr_get(kn, name, value, size); in kernfs_vfs_xattr_get()
328 struct kernfs_node *kn = inode->i_private; in kernfs_vfs_xattr_set() local
330 return kernfs_xattr_set(kn, name, value, size, flags); in kernfs_vfs_xattr_set()
333 static int kernfs_vfs_user_xattr_add(struct kernfs_node *kn, in kernfs_vfs_user_xattr_add() argument
338 atomic_t *sz = &kn->iattr->user_xattr_size; in kernfs_vfs_user_xattr_add()
339 atomic_t *nr = &kn->iattr->nr_user_xattrs; in kernfs_vfs_user_xattr_add()
367 static int kernfs_vfs_user_xattr_rm(struct kernfs_node *kn, in kernfs_vfs_user_xattr_rm() argument
372 atomic_t *sz = &kn->iattr->user_xattr_size; in kernfs_vfs_user_xattr_rm()
373 atomic_t *nr = &kn->iattr->nr_user_xattrs; in kernfs_vfs_user_xattr_rm()
394 struct kernfs_node *kn = inode->i_private; in kernfs_vfs_user_xattr_set() local
397 if (!(kernfs_root(kn)->flags & KERNFS_ROOT_SUPPORT_USER_XATTR)) in kernfs_vfs_user_xattr_set()
400 attrs = kernfs_iattrs(kn); in kernfs_vfs_user_xattr_set()
405 return kernfs_vfs_user_xattr_add(kn, full_name, &attrs->xattrs, in kernfs_vfs_user_xattr_set()
408 return kernfs_vfs_user_xattr_rm(kn, full_name, &attrs->xattrs, in kernfs_vfs_user_xattr_set()