Skip to content

Commit d7bde4f

Browse files
chuckleverbrauner
authored andcommitted
Revert "libfs: Add simple_offset_empty()"
simple_empty() and simple_offset_empty() perform the same task. The latter's use as a canary to find bugs has not found any new issues. A subsequent patch will remove the use of the mtree for iterating directory contents, so revert back to using a similar mechanism for determining whether a directory is indeed empty. Only one such mechanism is ever needed. Signed-off-by: Chuck Lever <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Yang Erkun <[email protected]> Signed-off-by: Christian Brauner <[email protected]>
1 parent 903dc9c commit d7bde4f

File tree

3 files changed

+2
-35
lines changed

3 files changed

+2
-35
lines changed

fs/libfs.c

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -329,38 +329,6 @@ void simple_offset_remove(struct offset_ctx *octx, struct dentry *dentry)
329329
offset_set(dentry, 0);
330330
}
331331

332-
/**
333-
* simple_offset_empty - Check if a dentry can be unlinked
334-
* @dentry: dentry to be tested
335-
*
336-
* Returns 0 if @dentry is a non-empty directory; otherwise returns 1.
337-
*/
338-
int simple_offset_empty(struct dentry *dentry)
339-
{
340-
struct inode *inode = d_inode(dentry);
341-
struct offset_ctx *octx;
342-
struct dentry *child;
343-
unsigned long index;
344-
int ret = 1;
345-
346-
if (!inode || !S_ISDIR(inode->i_mode))
347-
return ret;
348-
349-
index = DIR_OFFSET_MIN;
350-
octx = inode->i_op->get_offset_ctx(inode);
351-
mt_for_each(&octx->mt, child, index, LONG_MAX) {
352-
spin_lock(&child->d_lock);
353-
if (simple_positive(child)) {
354-
spin_unlock(&child->d_lock);
355-
ret = 0;
356-
break;
357-
}
358-
spin_unlock(&child->d_lock);
359-
}
360-
361-
return ret;
362-
}
363-
364332
/**
365333
* simple_offset_rename - handle directory offsets for rename
366334
* @old_dir: parent directory of source entry

include/linux/fs.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3468,7 +3468,6 @@ struct offset_ctx {
34683468
void simple_offset_init(struct offset_ctx *octx);
34693469
int simple_offset_add(struct offset_ctx *octx, struct dentry *dentry);
34703470
void simple_offset_remove(struct offset_ctx *octx, struct dentry *dentry);
3471-
int simple_offset_empty(struct dentry *dentry);
34723471
int simple_offset_rename(struct inode *old_dir, struct dentry *old_dentry,
34733472
struct inode *new_dir, struct dentry *new_dentry);
34743473
int simple_offset_rename_exchange(struct inode *old_dir,

mm/shmem.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3818,7 +3818,7 @@ static int shmem_unlink(struct inode *dir, struct dentry *dentry)
38183818

38193819
static int shmem_rmdir(struct inode *dir, struct dentry *dentry)
38203820
{
3821-
if (!simple_offset_empty(dentry))
3821+
if (!simple_empty(dentry))
38223822
return -ENOTEMPTY;
38233823

38243824
drop_nlink(d_inode(dentry));
@@ -3875,7 +3875,7 @@ static int shmem_rename2(struct mnt_idmap *idmap,
38753875
return simple_offset_rename_exchange(old_dir, old_dentry,
38763876
new_dir, new_dentry);
38773877

3878-
if (!simple_offset_empty(new_dentry))
3878+
if (!simple_empty(new_dentry))
38793879
return -ENOTEMPTY;
38803880

38813881
if (flags & RENAME_WHITEOUT) {

0 commit comments

Comments
 (0)