summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Weinberger <richard@nod.at>2016-09-19 21:54:19 +0300
committerRichard Weinberger <richard@nod.at>2016-12-13 01:07:38 +0300
commitf6337d842668ad47f01d5f2dcd3730484f09d6fa (patch)
tree9035b79901820137ebcfc505ef845af728571433
parentd40a7962174f1144869f18d1fc68a385c9ab21ec (diff)
downloadlinux-f6337d842668ad47f01d5f2dcd3730484f09d6fa.tar.xz
ubifs: Export ubifs_check_dir_empty()
fscrypto will need this function too. Also get struct ubifs_info from the provided inode. Not all callers will have a reference to struct ubifs_info. Signed-off-by: Richard Weinberger <richard@nod.at>
-rw-r--r--fs/ubifs/dir.c8
-rw-r--r--fs/ubifs/ubifs.h1
2 files changed, 5 insertions, 4 deletions
diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
index ca16c5d7bab1..14a226d47f4c 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -712,15 +712,15 @@ out_cancel:
/**
* check_dir_empty - check if a directory is empty or not.
- * @c: UBIFS file-system description object
* @dir: VFS inode object of the directory to check
*
* This function checks if directory @dir is empty. Returns zero if the
* directory is empty, %-ENOTEMPTY if it is not, and other negative error codes
* in case of of errors.
*/
-static int check_dir_empty(struct ubifs_info *c, struct inode *dir)
+int ubifs_check_dir_empty(struct inode *dir)
{
+ struct ubifs_info *c = dir->i_sb->s_fs_info;
struct qstr nm = { .name = NULL };
struct ubifs_dent_node *dent;
union ubifs_key key;
@@ -758,7 +758,7 @@ static int ubifs_rmdir(struct inode *dir, struct dentry *dentry)
inode->i_ino, dir->i_ino);
ubifs_assert(inode_is_locked(dir));
ubifs_assert(inode_is_locked(inode));
- err = check_dir_empty(c, d_inode(dentry));
+ err = ubifs_check_dir_empty(d_inode(dentry));
if (err)
return err;
@@ -1108,7 +1108,7 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry,
ubifs_assert(inode_is_locked(new_inode));
if (unlink && is_dir) {
- err = check_dir_empty(c, new_inode);
+ err = ubifs_check_dir_empty(new_inode);
if (err)
return err;
}
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index b8b18d446a49..fe94300d4c08 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -1728,6 +1728,7 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, const struct inode *dir,
umode_t mode);
int ubifs_getattr(struct vfsmount *mnt, struct dentry *dentry,
struct kstat *stat);
+int ubifs_check_dir_empty(struct inode *dir);
/* xattr.c */
extern const struct xattr_handler *ubifs_xattr_handlers[];