Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 677c9b2e authored by Jeff Mahoney's avatar Jeff Mahoney Committed by Al Viro
Browse files

reiserfs: remove privroot hiding in lookup



 With Al Viro's patch to move privroot lookup to fs mount, there's no need
 to have special code to hide the privroot in reiserfs_lookup.

 I've also cleaned up the privroot hiding in reiserfs_readdir_dentry and
 removed the last user of reiserfs_xattrs().

Signed-off-by: default avatarJeff Mahoney <jeffm@suse.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent b82bb72b
Loading
Loading
Loading
Loading
+13 −11
Original line number Original line Diff line number Diff line
@@ -41,6 +41,18 @@ static int reiserfs_dir_fsync(struct file *filp, struct dentry *dentry,


#define store_ih(where,what) copy_item_head (where, what)
#define store_ih(where,what) copy_item_head (where, what)


static inline bool is_privroot_deh(struct dentry *dir,
				   struct reiserfs_de_head *deh)
{
	int ret = 0;
#ifdef CONFIG_REISERFS_FS_XATTR
	struct dentry *privroot = REISERFS_SB(dir->d_sb)->priv_root;
	ret = (dir == dir->d_parent && privroot->d_inode &&
	       deh->deh_objectid == INODE_PKEY(privroot->d_inode)->k_objectid);
#endif
	return ret;
}

int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
			   filldir_t filldir, loff_t *pos)
			   filldir_t filldir, loff_t *pos)
{
{
@@ -138,18 +150,8 @@ int reiserfs_readdir_dentry(struct dentry *dentry, void *dirent,
				}
				}


				/* Ignore the .reiserfs_priv entry */
				/* Ignore the .reiserfs_priv entry */
				if (reiserfs_xattrs(inode->i_sb) &&
				if (is_privroot_deh(dentry, deh))
				    !old_format_only(inode->i_sb) &&
				    dentry == inode->i_sb->s_root &&
				    REISERFS_SB(inode->i_sb)->priv_root &&
				    REISERFS_SB(inode->i_sb)->priv_root->d_inode
				    && deh_objectid(deh) ==
				    le32_to_cpu(INODE_PKEY
						(REISERFS_SB(inode->i_sb)->
						 priv_root->d_inode)->
						k_objectid)) {
					continue;
					continue;
				}


				d_off = deh_offset(deh);
				d_off = deh_offset(deh);
				*pos = d_off;
				*pos = d_off;
+2 −15
Original line number Original line Diff line number Diff line
@@ -338,21 +338,8 @@ static struct dentry *reiserfs_lookup(struct inode *dir, struct dentry *dentry,
				&path_to_entry, &de);
				&path_to_entry, &de);
	pathrelse(&path_to_entry);
	pathrelse(&path_to_entry);
	if (retval == NAME_FOUND) {
	if (retval == NAME_FOUND) {
		/* Hide the .reiserfs_priv directory */
		inode = reiserfs_iget(dir->i_sb,
		if (reiserfs_xattrs(dir->i_sb) &&
				      (struct cpu_key *)&(de.de_dir_id));
		    !old_format_only(dir->i_sb) &&
		    REISERFS_SB(dir->i_sb)->priv_root &&
		    REISERFS_SB(dir->i_sb)->priv_root->d_inode &&
		    de.de_objectid ==
		    le32_to_cpu(INODE_PKEY
				(REISERFS_SB(dir->i_sb)->priv_root->d_inode)->
				k_objectid)) {
			reiserfs_write_unlock(dir->i_sb);
			return ERR_PTR(-EACCES);
		}

		inode =
		    reiserfs_iget(dir->i_sb, (struct cpu_key *)&(de.de_dir_id));
		if (!inode || IS_ERR(inode)) {
		if (!inode || IS_ERR(inode)) {
			reiserfs_write_unlock(dir->i_sb);
			reiserfs_write_unlock(dir->i_sb);
			return ERR_PTR(-EACCES);
			return ERR_PTR(-EACCES);
+1 −1
Original line number Original line Diff line number Diff line
@@ -841,7 +841,7 @@ ssize_t reiserfs_listxattr(struct dentry * dentry, char *buffer, size_t size)
	if (!dentry->d_inode)
	if (!dentry->d_inode)
		return -EINVAL;
		return -EINVAL;


	if (!reiserfs_xattrs(dentry->d_sb) ||
	if (!dentry->d_sb->s_xattr ||
	    get_inode_sd_version(dentry->d_inode) == STAT_DATA_V1)
	    get_inode_sd_version(dentry->d_inode) == STAT_DATA_V1)
		return -EOPNOTSUPP;
		return -EOPNOTSUPP;


+0 −1
Original line number Original line Diff line number Diff line
@@ -488,7 +488,6 @@ enum reiserfs_mount_options {
#define reiserfs_data_log(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_DATA_LOG))
#define reiserfs_data_log(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_DATA_LOG))
#define reiserfs_data_ordered(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_DATA_ORDERED))
#define reiserfs_data_ordered(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_DATA_ORDERED))
#define reiserfs_data_writeback(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_DATA_WRITEBACK))
#define reiserfs_data_writeback(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_DATA_WRITEBACK))
#define reiserfs_xattrs(s) ((s)->s_xattr != NULL)
#define reiserfs_xattrs_user(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_XATTRS_USER))
#define reiserfs_xattrs_user(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_XATTRS_USER))
#define reiserfs_posixacl(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_POSIXACL))
#define reiserfs_posixacl(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_POSIXACL))
#define reiserfs_xattrs_optional(s) (reiserfs_xattrs_user(s) || reiserfs_posixacl(s))
#define reiserfs_xattrs_optional(s) (reiserfs_xattrs_user(s) || reiserfs_posixacl(s))