diff options
Diffstat (limited to 'fs/btrfs/delayed-inode.c')
-rw-r--r-- | fs/btrfs/delayed-inode.c | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 056276101c63..a6226cd6063c 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c | |||
@@ -1633,28 +1633,18 @@ void btrfs_readdir_put_delayed_items(struct inode *inode, | |||
1633 | int btrfs_should_delete_dir_index(struct list_head *del_list, | 1633 | int btrfs_should_delete_dir_index(struct list_head *del_list, |
1634 | u64 index) | 1634 | u64 index) |
1635 | { | 1635 | { |
1636 | struct btrfs_delayed_item *curr, *next; | 1636 | struct btrfs_delayed_item *curr; |
1637 | int ret; | 1637 | int ret = 0; |
1638 | |||
1639 | if (list_empty(del_list)) | ||
1640 | return 0; | ||
1641 | 1638 | ||
1642 | list_for_each_entry_safe(curr, next, del_list, readdir_list) { | 1639 | list_for_each_entry(curr, del_list, readdir_list) { |
1643 | if (curr->key.offset > index) | 1640 | if (curr->key.offset > index) |
1644 | break; | 1641 | break; |
1645 | 1642 | if (curr->key.offset == index) { | |
1646 | list_del(&curr->readdir_list); | 1643 | ret = 1; |
1647 | ret = (curr->key.offset == index); | 1644 | break; |
1648 | 1645 | } | |
1649 | if (refcount_dec_and_test(&curr->refs)) | ||
1650 | kfree(curr); | ||
1651 | |||
1652 | if (ret) | ||
1653 | return 1; | ||
1654 | else | ||
1655 | continue; | ||
1656 | } | 1646 | } |
1657 | return 0; | 1647 | return ret; |
1658 | } | 1648 | } |
1659 | 1649 | ||
1660 | /* | 1650 | /* |