From: David Sterba <dsterba@suse.com>
Date: Thu, 18 Jun 2020 12:54:56 +0000 (+0200)
Subject: btrfs: start deprecation of mount option inode_cache
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b547a88ea577;p=linux.git

btrfs: start deprecation of mount option inode_cache

Estimated time of removal of the functionality is 5.11, the option will
be still parsed but will have no effect.

Reasons for deprecation and removal:

- very poor naming choice of the mount option, it's supposed to cache
  and reuse the inode _numbers_, but it sounds a some generic cache for
  inodes

- the only known usecase where this option would make sense is on a
  32bit architecture where inode numbers in one subvolume would be
  exhausted due to 32bit inode::i_ino

- the cache is stored on disk, consumes space, needs to be loaded and
  written back

- new inode number allocation is slower due to lookups into the cache
  (compared to a simple increment which is the default)

- uses the free-space-cache code that is going to be deprecated as well
  in the future

Known problems:

- since 2011, returning EEXIST when there's not enough space in a page
  to store all checksums, see commit 4b9465cb9e38 ("Btrfs: add mount -o
  inode_cache")

Remaining issues:

- if the option was enabled, new inodes created, the option disabled
  again, the cache is still stored on the devices and there's currently
  no way to remove it

Signed-off-by: David Sterba <dsterba@suse.com>
---

diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index 76ab6d5d01a9..dac04e28643e 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -821,6 +821,8 @@ int btrfs_parse_options(struct btrfs_fs_info *info, char *options,
 			}
 			break;
 		case Opt_inode_cache:
+			btrfs_warn(info,
+	"the 'inode_cache' option is deprecated and will have no effect from 5.11");
 			btrfs_set_pending_and_info(info, INODE_MAP_CACHE,
 					   "enabling inode map caching");
 			break;