Lines Matching refs:dentry

65 static int xattr_create(struct inode *dir, struct dentry *dentry, int mode)  in xattr_create()  argument
68 return dir->i_op->create(dir, dentry, mode, true); in xattr_create()
72 static int xattr_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in xattr_mkdir() argument
75 return dir->i_op->mkdir(dir, dentry, mode); in xattr_mkdir()
84 static int xattr_unlink(struct inode *dir, struct dentry *dentry) in xattr_unlink() argument
90 mutex_lock_nested(&d_inode(dentry)->i_mutex, I_MUTEX_CHILD); in xattr_unlink()
91 error = dir->i_op->unlink(dir, dentry); in xattr_unlink()
92 mutex_unlock(&d_inode(dentry)->i_mutex); in xattr_unlink()
95 d_delete(dentry); in xattr_unlink()
99 static int xattr_rmdir(struct inode *dir, struct dentry *dentry) in xattr_rmdir() argument
105 mutex_lock_nested(&d_inode(dentry)->i_mutex, I_MUTEX_CHILD); in xattr_rmdir()
106 error = dir->i_op->rmdir(dir, dentry); in xattr_rmdir()
108 d_inode(dentry)->i_flags |= S_DEAD; in xattr_rmdir()
109 mutex_unlock(&d_inode(dentry)->i_mutex); in xattr_rmdir()
111 d_delete(dentry); in xattr_rmdir()
118 static struct dentry *open_xa_root(struct super_block *sb, int flags) in open_xa_root()
120 struct dentry *privroot = REISERFS_SB(sb)->priv_root; in open_xa_root()
121 struct dentry *xaroot; in open_xa_root()
146 static struct dentry *open_xa_dir(const struct inode *inode, int flags) in open_xa_dir()
148 struct dentry *xaroot, *xadir; in open_xa_dir()
185 struct dentry *xadir;
187 struct dentry *dentries[8];
196 struct dentry *dentry; in fill_with_dentries() local
207 dentry = lookup_one_len(name, dbuf->xadir, namelen); in fill_with_dentries()
208 if (IS_ERR(dentry)) { in fill_with_dentries()
209 return PTR_ERR(dentry); in fill_with_dentries()
210 } else if (d_really_is_negative(dentry)) { in fill_with_dentries()
212 reiserfs_error(dentry->d_sb, "xattr-20003", in fill_with_dentries()
215 dentry, dbuf->xadir); in fill_with_dentries()
216 dput(dentry); in fill_with_dentries()
220 dbuf->dentries[dbuf->count++] = dentry; in fill_with_dentries()
235 int (*action)(struct dentry *, void *), in reiserfs_for_each_xattr() argument
238 struct dentry *dir; in reiserfs_for_each_xattr()
267 struct dentry *dentry = buf.dentries[i]; in reiserfs_for_each_xattr() local
269 if (!d_is_dir(dentry)) in reiserfs_for_each_xattr()
270 err = action(dentry, data); in reiserfs_for_each_xattr()
272 dput(dentry); in reiserfs_for_each_xattr()
320 static int delete_one_xattr(struct dentry *dentry, void *data) in delete_one_xattr() argument
322 struct inode *dir = d_inode(dentry->d_parent); in delete_one_xattr()
325 if (d_is_dir(dentry)) in delete_one_xattr()
326 return xattr_rmdir(dir, dentry); in delete_one_xattr()
328 return xattr_unlink(dir, dentry); in delete_one_xattr()
331 static int chown_one_xattr(struct dentry *dentry, void *data) in chown_one_xattr() argument
343 err = reiserfs_setattr(dentry, attrs); in chown_one_xattr()
377 static struct dentry *xattr_lookup(struct inode *inode, const char *name, in xattr_lookup()
380 struct dentry *xadir, *xafile; in xattr_lookup()
466 struct dentry *dentry, *xadir; in lookup_and_delete_xattr() local
473 dentry = lookup_one_len(name, xadir, strlen(name)); in lookup_and_delete_xattr()
474 if (IS_ERR(dentry)) { in lookup_and_delete_xattr()
475 err = PTR_ERR(dentry); in lookup_and_delete_xattr()
479 if (d_really_is_positive(dentry)) { in lookup_and_delete_xattr()
480 err = xattr_unlink(d_inode(xadir), dentry); in lookup_and_delete_xattr()
484 dput(dentry); in lookup_and_delete_xattr()
503 struct dentry *dentry; in reiserfs_xattr_set_handle() local
519 dentry = xattr_lookup(inode, name, flags); in reiserfs_xattr_set_handle()
520 if (IS_ERR(dentry)) in reiserfs_xattr_set_handle()
521 return PTR_ERR(dentry); in reiserfs_xattr_set_handle()
536 page = reiserfs_get_page(d_inode(dentry), file_pos); in reiserfs_xattr_set_handle()
576 if (!err && new_size < i_size_read(d_inode(dentry))) { in reiserfs_xattr_set_handle()
583 mutex_lock_nested(&d_inode(dentry)->i_mutex, I_MUTEX_XATTR); in reiserfs_xattr_set_handle()
584 inode_dio_wait(d_inode(dentry)); in reiserfs_xattr_set_handle()
586 err = reiserfs_setattr(dentry, &newattrs); in reiserfs_xattr_set_handle()
587 mutex_unlock(&d_inode(dentry)->i_mutex); in reiserfs_xattr_set_handle()
592 dput(dentry); in reiserfs_xattr_set_handle()
635 struct dentry *dentry; in reiserfs_xattr_get() local
652 dentry = xattr_lookup(inode, name, XATTR_REPLACE); in reiserfs_xattr_get()
653 if (IS_ERR(dentry)) { in reiserfs_xattr_get()
654 err = PTR_ERR(dentry); in reiserfs_xattr_get()
660 isize = i_size_read(d_inode(dentry)); in reiserfs_xattr_get()
683 page = reiserfs_get_page(d_inode(dentry), file_pos); in reiserfs_xattr_get()
728 dput(dentry); in reiserfs_xattr_get()
771 reiserfs_getxattr(struct dentry * dentry, const char *name, void *buffer, in reiserfs_getxattr() argument
776 handler = find_xattr_handler_prefix(dentry->d_sb->s_xattr, name); in reiserfs_getxattr()
778 if (!handler || get_inode_sd_version(d_inode(dentry)) == STAT_DATA_V1) in reiserfs_getxattr()
781 return handler->get(dentry, name, buffer, size, handler->flags); in reiserfs_getxattr()
790 reiserfs_setxattr(struct dentry *dentry, const char *name, const void *value, in reiserfs_setxattr() argument
795 handler = find_xattr_handler_prefix(dentry->d_sb->s_xattr, name); in reiserfs_setxattr()
797 if (!handler || get_inode_sd_version(d_inode(dentry)) == STAT_DATA_V1) in reiserfs_setxattr()
800 return handler->set(dentry, name, value, size, flags, handler->flags); in reiserfs_setxattr()
808 int reiserfs_removexattr(struct dentry *dentry, const char *name) in reiserfs_removexattr() argument
812 handler = find_xattr_handler_prefix(dentry->d_sb->s_xattr, name); in reiserfs_removexattr()
814 if (!handler || get_inode_sd_version(d_inode(dentry)) == STAT_DATA_V1) in reiserfs_removexattr()
817 return handler->set(dentry, name, NULL, 0, XATTR_REPLACE, handler->flags); in reiserfs_removexattr()
825 struct dentry *dentry; member
840 handler = find_xattr_handler_prefix(b->dentry->d_sb->s_xattr, in listxattr_filler()
845 size = handler->list(b->dentry, b->buf + b->pos, in listxattr_filler()
851 size = handler->list(b->dentry, NULL, 0, name, in listxattr_filler()
867 ssize_t reiserfs_listxattr(struct dentry * dentry, char *buffer, size_t size) in reiserfs_listxattr() argument
869 struct dentry *dir; in reiserfs_listxattr()
873 .dentry = dentry, in reiserfs_listxattr()
878 if (d_really_is_negative(dentry)) in reiserfs_listxattr()
881 if (!dentry->d_sb->s_xattr || in reiserfs_listxattr()
882 get_inode_sd_version(d_inode(dentry)) == STAT_DATA_V1) in reiserfs_listxattr()
885 dir = open_xa_dir(d_inode(dentry), XATTR_REPLACE); in reiserfs_listxattr()
905 static int create_privroot(struct dentry *dentry) in create_privroot() argument
908 struct inode *inode = d_inode(dentry->d_parent); in create_privroot()
912 err = xattr_mkdir(inode, dentry, 0700); in create_privroot()
913 if (err || d_really_is_negative(dentry)) { in create_privroot()
914 reiserfs_warning(dentry->d_sb, "jdm-20006", in create_privroot()
921 d_inode(dentry)->i_flags |= S_PRIVATE; in create_privroot()
922 reiserfs_info(dentry->d_sb, "Created %s - reserved for xattr " in create_privroot()
931 static int create_privroot(struct dentry *dentry) { return 0; } in create_privroot() argument
985 static int xattr_hide_revalidate(struct dentry *dentry, unsigned int flags) in xattr_hide_revalidate() argument
996 struct dentry *dentry; in reiserfs_lookup_privroot() local
1001 dentry = lookup_one_len(PRIVROOT_NAME, s->s_root, in reiserfs_lookup_privroot()
1003 if (!IS_ERR(dentry)) { in reiserfs_lookup_privroot()
1004 REISERFS_SB(s)->priv_root = dentry; in reiserfs_lookup_privroot()
1005 d_set_d_op(dentry, &xattr_lookup_poison_ops); in reiserfs_lookup_privroot()
1006 if (d_really_is_positive(dentry)) in reiserfs_lookup_privroot()
1007 d_inode(dentry)->i_flags |= S_PRIVATE; in reiserfs_lookup_privroot()
1009 err = PTR_ERR(dentry); in reiserfs_lookup_privroot()
1023 struct dentry *privroot = REISERFS_SB(s)->priv_root; in reiserfs_xattr_init()
1039 struct dentry *dentry; in reiserfs_xattr_init() local
1041 dentry = lookup_one_len(XAROOT_NAME, privroot, in reiserfs_xattr_init()
1043 if (!IS_ERR(dentry)) in reiserfs_xattr_init()
1044 REISERFS_SB(s)->xattr_root = dentry; in reiserfs_xattr_init()
1046 err = PTR_ERR(dentry); in reiserfs_xattr_init()