reiserfs: switch reiserfs_readdir_dentry to inode
... and clean the callers up a bit Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
		
							parent
							
								
									99ce4169a9
								
							
						
					
					
						commit
						cd62cdae0b
					
				| @ -57,9 +57,8 @@ static inline bool is_privroot_deh(struct inode *dir, struct reiserfs_de_head *d | ||||
| 	        deh->deh_objectid == INODE_PKEY(privroot->d_inode)->k_objectid); | ||||
| } | ||||
| 
 | ||||
| int reiserfs_readdir_dentry(struct dentry *dentry, struct dir_context *ctx) | ||||
| int reiserfs_readdir_inode(struct inode *inode, struct dir_context *ctx) | ||||
| { | ||||
| 	struct inode *inode = dentry->d_inode; | ||||
| 	struct cpu_key pos_key;	/* key of current position in the directory (key of directory entry) */ | ||||
| 	INITIALIZE_PATH(path_to_entry); | ||||
| 	struct buffer_head *bh; | ||||
| @ -243,7 +242,7 @@ out: | ||||
| 
 | ||||
| static int reiserfs_readdir(struct file *file, struct dir_context *ctx) | ||||
| { | ||||
| 	return reiserfs_readdir_dentry(file->f_path.dentry, ctx); | ||||
| 	return reiserfs_readdir_inode(file_inode(file), ctx); | ||||
| } | ||||
| 
 | ||||
| /* compose directory item containing "." and ".." entries (entries are
 | ||||
|  | ||||
| @ -2709,7 +2709,7 @@ extern const struct inode_operations reiserfs_dir_inode_operations; | ||||
| extern const struct inode_operations reiserfs_symlink_inode_operations; | ||||
| extern const struct inode_operations reiserfs_special_inode_operations; | ||||
| extern const struct file_operations reiserfs_dir_operations; | ||||
| int reiserfs_readdir_dentry(struct dentry *, struct dir_context *); | ||||
| int reiserfs_readdir_inode(struct inode *, struct dir_context *); | ||||
| 
 | ||||
| /* tail_conversion.c */ | ||||
| int direct2indirect(struct reiserfs_transaction_handle *, struct inode *, | ||||
|  | ||||
| @ -249,28 +249,27 @@ static int reiserfs_for_each_xattr(struct inode *inode, | ||||
| 	reiserfs_write_lock(inode->i_sb); | ||||
| 
 | ||||
| 	buf.xadir = dir; | ||||
| 	err = reiserfs_readdir_dentry(dir, &buf.ctx); | ||||
| 	while ((err == 0 || err == -ENOSPC) && buf.count) { | ||||
| 		err = 0; | ||||
| 
 | ||||
| 		for (i = 0; i < buf.count && buf.dentries[i]; i++) { | ||||
| 			int lerr = 0; | ||||
| 	while (1) { | ||||
| 		err = reiserfs_readdir_inode(dir->d_inode, &buf.ctx); | ||||
| 		if (err) | ||||
| 			break; | ||||
| 		if (!buf.count) | ||||
| 			break; | ||||
| 		for (i = 0; !err && i < buf.count && buf.dentries[i]; i++) { | ||||
| 			struct dentry *dentry = buf.dentries[i]; | ||||
| 
 | ||||
| 			if (err == 0 && !S_ISDIR(dentry->d_inode->i_mode)) | ||||
| 				lerr = action(dentry, data); | ||||
| 			if (!S_ISDIR(dentry->d_inode->i_mode)) | ||||
| 				err = action(dentry, data); | ||||
| 
 | ||||
| 			dput(dentry); | ||||
| 			buf.dentries[i] = NULL; | ||||
| 			err = lerr ?: err; | ||||
| 		} | ||||
| 		if (err) | ||||
| 			break; | ||||
| 		buf.count = 0; | ||||
| 		if (!err) | ||||
| 			err = reiserfs_readdir_dentry(dir, &buf.ctx); | ||||
| 	} | ||||
| 	mutex_unlock(&dir->d_inode->i_mutex); | ||||
| 
 | ||||
| 	/* Clean up after a failed readdir */ | ||||
| 	cleanup_dentry_buf(&buf); | ||||
| 
 | ||||
| 	if (!err) { | ||||
| @ -868,7 +867,7 @@ ssize_t reiserfs_listxattr(struct dentry * dentry, char *buffer, size_t size) | ||||
| 	} | ||||
| 
 | ||||
| 	mutex_lock_nested(&dir->d_inode->i_mutex, I_MUTEX_XATTR); | ||||
| 	err = reiserfs_readdir_dentry(dir, &buf.ctx); | ||||
| 	err = reiserfs_readdir_inode(dir->d_inode, &buf.ctx); | ||||
| 	mutex_unlock(&dir->d_inode->i_mutex); | ||||
| 
 | ||||
| 	if (!err) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user