libfs: Remove parent dentry locking in offset_iterate_dir()
authorChuck Lever <chuck.lever@oracle.com>
Tue, 25 Jul 2023 18:31:04 +0000 (14:31 -0400)
committerChristian Brauner <brauner@kernel.org>
Wed, 9 Aug 2023 07:15:41 +0000 (09:15 +0200)
commit2be4f05af71bb2a9958c5680c19e5a489636ff42
tree422fc12ee546561b1ccf87b66842201799e43f69
parentbbaef7973dd017954419718ab2df526ae1f66e93
libfs: Remove parent dentry locking in offset_iterate_dir()

Since offset_iterate_dir() does not walk the parent's d_subdir list
nor does it manipulate the parent's d_child, there doesn't seem to
be a reason to hold the parent's d_lock. The offset_ctx's xarray can
be sufficiently protected with just the RCU read lock.

Flame graph data captured during the git regression run shows a
20% reduction in CPU cycles consumed in offset_find_next().

Reported-by: kernel test robot <oliver.sang@intel.com>
Closes: https://lore.kernel.org/oe-lkp/202307171640.e299f8d5-oliver.sang@intel.com
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Message-Id: <169030957098.157536.9938425508695693348.stgit@manet.1015granger.net>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/libfs.c