Commit f6337d84 authored by Richard Weinberger's avatar Richard Weinberger

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: default avatarRichard Weinberger <richard@nod.at>
parent d40a7962
...@@ -712,15 +712,15 @@ static int ubifs_unlink(struct inode *dir, struct dentry *dentry) ...@@ -712,15 +712,15 @@ static int ubifs_unlink(struct inode *dir, struct dentry *dentry)
/** /**
* check_dir_empty - check if a directory is empty or not. * 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 * @dir: VFS inode object of the directory to check
* *
* This function checks if directory @dir is empty. Returns zero if the * 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 * directory is empty, %-ENOTEMPTY if it is not, and other negative error codes
* in case of of errors. * 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 qstr nm = { .name = NULL };
struct ubifs_dent_node *dent; struct ubifs_dent_node *dent;
union ubifs_key key; union ubifs_key key;
...@@ -758,7 +758,7 @@ static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) ...@@ -758,7 +758,7 @@ static int ubifs_rmdir(struct inode *dir, struct dentry *dentry)
inode->i_ino, dir->i_ino); inode->i_ino, dir->i_ino);
ubifs_assert(inode_is_locked(dir)); ubifs_assert(inode_is_locked(dir));
ubifs_assert(inode_is_locked(inode)); ubifs_assert(inode_is_locked(inode));
err = check_dir_empty(c, d_inode(dentry)); err = ubifs_check_dir_empty(d_inode(dentry));
if (err) if (err)
return err; return err;
...@@ -1108,7 +1108,7 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, ...@@ -1108,7 +1108,7 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry,
ubifs_assert(inode_is_locked(new_inode)); ubifs_assert(inode_is_locked(new_inode));
if (unlink && is_dir) { if (unlink && is_dir) {
err = check_dir_empty(c, new_inode); err = ubifs_check_dir_empty(new_inode);
if (err) if (err)
return err; return err;
} }
......
...@@ -1728,6 +1728,7 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, const struct inode *dir, ...@@ -1728,6 +1728,7 @@ struct inode *ubifs_new_inode(struct ubifs_info *c, const struct inode *dir,
umode_t mode); umode_t mode);
int ubifs_getattr(struct vfsmount *mnt, struct dentry *dentry, int ubifs_getattr(struct vfsmount *mnt, struct dentry *dentry,
struct kstat *stat); struct kstat *stat);
int ubifs_check_dir_empty(struct inode *dir);
/* xattr.c */ /* xattr.c */
extern const struct xattr_handler *ubifs_xattr_handlers[]; extern const struct xattr_handler *ubifs_xattr_handlers[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment