]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Merge patch series "symlink length caching"
authorChristian Brauner <brauner@kernel.org>
Thu, 21 Nov 2024 10:15:21 +0000 (11:15 +0100)
committerChristian Brauner <brauner@kernel.org>
Sun, 22 Dec 2024 10:29:51 +0000 (11:29 +0100)
Mateusz Guzik <mjguzik@gmail.com> says:

quote:
    When utilized it dodges strlen() in vfs_readlink(), giving about 1.5%
    speed up when issuing readlink on /initrd.img on ext4.

The size is stored in a union with i_devices, which is never looked at
unless the inode is for a device.

ext4 and tmpfs are patched, other filesystems can also get there with
some more work.

benchmark:
plug into will-it-scale into tests/readlink1.c:

char *testcase_description = "readlink /initrd.img";

void testcase(unsigned long long *iterations, unsigned long nr)
{
        char *tmplink = "/initrd.img";
        char buf[1024];

        while (1) {
                int error = readlink(tmplink, buf, sizeof(buf));
                assert(error > 0);

                (*iterations)++;
        }
}

* patches from https://lore.kernel.org/r/20241120112037.822078-1-mjguzik@gmail.com:
  tmpfs: use inode_set_cached_link()
  ext4: use inode_set_cached_link()
  vfs: support caching symlink lengths in inodes

Link: https://lore.kernel.org/r/20241120112037.822078-1-mjguzik@gmail.com
Signed-off-by: Christian Brauner <brauner@kernel.org>

Trivial merge