]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commit
btrfs: add a i_mmap_lock to our inode
authorJosef Bacik <josef@toxicpanda.com>
Wed, 10 Feb 2021 22:14:33 +0000 (17:14 -0500)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Apr 2021 15:25:15 +0000 (17:25 +0200)
commit8318ba79eeeb1ab69bea1cc4386d5a185abc0cb8
treed756fbc9eafc402abbb4b94e3983a760ffbdd5d2
parent5e295768a0c6086901250b6be22f14eb01232ba1
btrfs: add a i_mmap_lock to our inode

We need to be able to exclude page_mkwrite from happening concurrently
with certain operations.  To facilitate this, add a i_mmap_lock to our
inode, down_read() it in our mkwrite, and add a new ILOCK flag to
indicate that we want to take the i_mmap_lock as well.  I used pahole to
check the size of the btrfs_inode, the sizes are as follows

no lockdep:
before: 1120 (3 per 4k page)
after: 1160 (3 per 4k page)

lockdep:
before: 2072 (1 per 4k page)
after: 2224 (1 per 4k page)

We're slightly larger but it doesn't change how many objects we can fit
per page.

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/btrfs_inode.h
fs/btrfs/ctree.h
fs/btrfs/inode.c