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