btrfs: Remove btrfs_inode::delayed_iput_count
[sfrench/cifs-2.6.git] / fs / btrfs / inode.c
index 4d3a4d1507a1f15bcb6a00aba15b3b922224f97c..b55b47f493e99973e4b62301ee472c984d639c8b 100644 (file)
@@ -3242,6 +3242,16 @@ static int btrfs_readpage_end_io_hook(struct btrfs_io_bio *io_bio,
                                      start, (size_t)(end - start + 1));
 }
 
                                      start, (size_t)(end - start + 1));
 }
 
+/*
+ * btrfs_add_delayed_iput - perform a delayed iput on @inode
+ *
+ * @inode: The inode we want to perform iput on
+ *
+ * This function uses the generic vfs_inode::i_count to track whether we should
+ * just decrement it (in case it's > 1) or if this is the last iput then link
+ * the inode to the delayed iput machinery. Delayed iputs are processed at
+ * transaction commit time/superblock commit/cleaner kthread.
+ */
 void btrfs_add_delayed_iput(struct inode *inode)
 {
        struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
 void btrfs_add_delayed_iput(struct inode *inode)
 {
        struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
@@ -3251,12 +3261,8 @@ void btrfs_add_delayed_iput(struct inode *inode)
                return;
 
        spin_lock(&fs_info->delayed_iput_lock);
                return;
 
        spin_lock(&fs_info->delayed_iput_lock);
-       if (binode->delayed_iput_count == 0) {
-               ASSERT(list_empty(&binode->delayed_iput));
-               list_add_tail(&binode->delayed_iput, &fs_info->delayed_iputs);
-       } else {
-               binode->delayed_iput_count++;
-       }
+       ASSERT(list_empty(&binode->delayed_iput));
+       list_add_tail(&binode->delayed_iput, &fs_info->delayed_iputs);
        spin_unlock(&fs_info->delayed_iput_lock);
 }
 
        spin_unlock(&fs_info->delayed_iput_lock);
 }
 
@@ -3269,13 +3275,7 @@ void btrfs_run_delayed_iputs(struct btrfs_fs_info *fs_info)
 
                inode = list_first_entry(&fs_info->delayed_iputs,
                                struct btrfs_inode, delayed_iput);
 
                inode = list_first_entry(&fs_info->delayed_iputs,
                                struct btrfs_inode, delayed_iput);
-               if (inode->delayed_iput_count) {
-                       inode->delayed_iput_count--;
-                       list_move_tail(&inode->delayed_iput,
-                                       &fs_info->delayed_iputs);
-               } else {
-                       list_del_init(&inode->delayed_iput);
-               }
+               list_del_init(&inode->delayed_iput);
                spin_unlock(&fs_info->delayed_iput_lock);
                iput(&inode->vfs_inode);
                spin_lock(&fs_info->delayed_iput_lock);
                spin_unlock(&fs_info->delayed_iput_lock);
                iput(&inode->vfs_inode);
                spin_lock(&fs_info->delayed_iput_lock);
@@ -9333,7 +9333,6 @@ struct inode *btrfs_alloc_inode(struct super_block *sb)
        ei->dir_index = 0;
        ei->last_unlink_trans = 0;
        ei->last_log_commit = 0;
        ei->dir_index = 0;
        ei->last_unlink_trans = 0;
        ei->last_log_commit = 0;
-       ei->delayed_iput_count = 0;
 
        spin_lock_init(&ei->lock);
        ei->outstanding_extents = 0;
 
        spin_lock_init(&ei->lock);
        ei->outstanding_extents = 0;