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
104 ret = __kernfs_setattr(kn, iattr); in kernfs_setattr()
113 struct kernfs_node *kn = inode->i_private; in kernfs_iop_setattr() local
116 if (!kn) in kernfs_iop_setattr()
124 error = __kernfs_setattr(kn, iattr); in kernfs_iop_setattr()
138 struct kernfs_node *kn = kernfs_dentry_node(dentry); in kernfs_iop_listxattr() local
141 attrs = kernfs_iattrs(kn); in kernfs_iop_listxattr()
165 static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode) in kernfs_refresh_inode() argument
167 struct kernfs_iattrs *attrs = kn->iattr; in kernfs_refresh_inode()
169 inode->i_mode = kn->mode; in kernfs_refresh_inode()
177 if (kernfs_type(kn) == KERNFS_DIR) in kernfs_refresh_inode()
178 set_nlink(inode, kn->dir.subdirs + 2); in kernfs_refresh_inode()
186 struct kernfs_node *kn = inode->i_private; in kernfs_iop_getattr() local
190 kernfs_refresh_inode(kn, inode); in kernfs_iop_getattr()
198 static void kernfs_init_inode(struct kernfs_node *kn, struct inode *inode) in kernfs_init_inode() argument
200 kernfs_get(kn); in kernfs_init_inode()
201 inode->i_private = kn; in kernfs_init_inode()
204 inode->i_generation = kernfs_gen(kn); in kernfs_init_inode()
206 set_default_inode_attr(inode, kn->mode); in kernfs_init_inode()
207 kernfs_refresh_inode(kn, inode); in kernfs_init_inode()
210 switch (kernfs_type(kn)) { in kernfs_init_inode()
214 if (kn->flags & KERNFS_EMPTY_DIR) in kernfs_init_inode()
218 inode->i_size = kn->attr.size; in kernfs_init_inode()
246 struct inode *kernfs_get_inode(struct super_block *sb, struct kernfs_node *kn) in kernfs_get_inode() argument
250 inode = iget_locked(sb, kernfs_ino(kn)); in kernfs_get_inode()
252 kernfs_init_inode(kn, inode); in kernfs_get_inode()
266 struct kernfs_node *kn = inode->i_private; in kernfs_evict_inode() local
270 kernfs_put(kn); in kernfs_evict_inode()
276 struct kernfs_node *kn; in kernfs_iop_permission() local
282 kn = inode->i_private; in kernfs_iop_permission()
286 kernfs_refresh_inode(kn, inode); in kernfs_iop_permission()
294 int kernfs_xattr_get(struct kernfs_node *kn, const char *name, in kernfs_xattr_get() argument
297 struct kernfs_iattrs *attrs = kernfs_iattrs_noalloc(kn); in kernfs_xattr_get()
304 int kernfs_xattr_set(struct kernfs_node *kn, const char *name, in kernfs_xattr_set() argument
307 struct kernfs_iattrs *attrs = kernfs_iattrs(kn); in kernfs_xattr_set()
319 struct kernfs_node *kn = inode->i_private; in kernfs_vfs_xattr_get() local
321 return kernfs_xattr_get(kn, name, value, size); in kernfs_vfs_xattr_get()
331 struct kernfs_node *kn = inode->i_private; in kernfs_vfs_xattr_set() local
333 return kernfs_xattr_set(kn, name, value, size, flags); in kernfs_vfs_xattr_set()
336 static int kernfs_vfs_user_xattr_add(struct kernfs_node *kn, in kernfs_vfs_user_xattr_add() argument
341 atomic_t *sz = &kn->iattr->user_xattr_size; in kernfs_vfs_user_xattr_add()
342 atomic_t *nr = &kn->iattr->nr_user_xattrs; in kernfs_vfs_user_xattr_add()
370 static int kernfs_vfs_user_xattr_rm(struct kernfs_node *kn, in kernfs_vfs_user_xattr_rm() argument
375 atomic_t *sz = &kn->iattr->user_xattr_size; in kernfs_vfs_user_xattr_rm()
376 atomic_t *nr = &kn->iattr->nr_user_xattrs; in kernfs_vfs_user_xattr_rm()
398 struct kernfs_node *kn = inode->i_private; in kernfs_vfs_user_xattr_set() local
401 if (!(kernfs_root(kn)->flags & KERNFS_ROOT_SUPPORT_USER_XATTR)) in kernfs_vfs_user_xattr_set()
404 attrs = kernfs_iattrs(kn); in kernfs_vfs_user_xattr_set()
409 return kernfs_vfs_user_xattr_add(kn, full_name, &attrs->xattrs, in kernfs_vfs_user_xattr_set()
412 return kernfs_vfs_user_xattr_rm(kn, full_name, &attrs->xattrs, in kernfs_vfs_user_xattr_set()