diff options
author | David Sterba <dsterba@suse.cz> | 2015-11-19 14:15:51 +0100 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2016-01-07 14:26:58 +0100 |
commit | 8089fe62c6603860f6796ca80519b92391292f21 (patch) | |
tree | da517c3481f00b43a364ad14c51d496d73fcdf77 /fs/btrfs/btrfs_inode.h | |
parent | c5ca87819d7f10625b0940b356adb8ac0f1080d7 (diff) | |
download | linux-stable-8089fe62c6603860f6796ca80519b92391292f21.tar.gz linux-stable-8089fe62c6603860f6796ca80519b92391292f21.tar.bz2 linux-stable-8089fe62c6603860f6796ca80519b92391292f21.zip |
btrfs: put delayed item hook into inode
Inodes for delayed iput allocate a trivial helper structure, let's place
the list hook directly into the inode and save a kmalloc (killing a
__GFP_NOFAIL as a bonus) at the cost of increasing size of btrfs_inode.
The inode can be put into the delayed_iputs list more than once and we
have to keep the count. This means we can't use the list_splice to
process a bunch of inodes because we'd lost track of the count if the
inode is put into the delayed iputs again while it's processed.
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/btrfs_inode.h')
-rw-r--r-- | fs/btrfs/btrfs_inode.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index 0ef5cc13fae2..61205e3bbefa 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h @@ -192,6 +192,10 @@ struct btrfs_inode { /* File creation time. */ struct timespec i_otime; + /* Hook into fs_info->delayed_iputs */ + struct list_head delayed_iput; + long delayed_iput_count; + struct inode vfs_inode; }; |