Re: [PATCH v9 4/6] selftests/liveupdate: add test case for LUO_SESSION_MAGIC

Mike Rapoport
2026-04-21T10:34:14Z

On Mon, Apr 20, 2026 at 03:15:12PM +0100, luca.boccassi@gmail.com wrote:
> From: Luca Boccassi <luca.boccassi@gmail.com>
>
> Verify that fstat works as expected after the switch from anon_inode
> to the new magic number.
>
> Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com>
> Reviewed-by: Pasha Tatashin <pasha.tatashin@soleen.com>

Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>

> ---
> .../testing/selftests/liveupdate/liveupdate.c | 40 +++++++++++++++++++
> 1 file changed, 40 insertions(+)
>
> diff --git a/tools/testing/selftests/liveupdate/liveupdate.c b/tools/testing/selftests/liveupdate/liveupdate.c
> index f0a8e600c154..5e99af0cc6e9 100644
> --- a/tools/testing/selftests/liveupdate/liveupdate.c
> +++ b/tools/testing/selftests/liveupdate/liveupdate.c
> @@ -22,9 +22,12 @@
> #include <fcntl.h>
> #include <string.h>
> #include <sys/ioctl.h>
> +#include <sys/stat.h>
> +#include <sys/vfs.h>
> #include <unistd.h>
>
> #include <linux/liveupdate.h>
> +#include <linux/magic.h>
>
> #include "../kselftest.h"
> #include "../kselftest_harness.h"
> @@ -387,4 +390,41 @@ TEST_F(liveupdate_device, create_session_empty_name)
> EXPECT_EQ(session_fd, -EINVAL);
> }
>
> +/*
> + * Test Case: Session fstat
> + *
> + * Verifies that fstatfs() on a session file descriptor reports the
> + * LUO_SESSION_MAGIC filesystem type, and that fstat() returns consistent
> + * inode numbers across different sessions (shared singleton inode).
> + */
> +TEST_F(liveupdate_device, session_fstat)
> +{
> + int session_fd1, session_fd2;
> + struct stat st1, st2;
> + struct statfs sfs;
> +
> + self->fd1 = open(LIVEUPDATE_DEV, O_RDWR);
> + if (self->fd1 < 0 && errno == ENOENT)
> + SKIP(return, "%s does not exist", LIVEUPDATE_DEV);
> + ASSERT_GE(self->fd1, 0);
> +
> + session_fd1 = create_session(self->fd1, "fstat-session-1");
> + ASSERT_GE(session_fd1, 0);
> +
> + session_fd2 = create_session(self->fd1, "fstat-session-2");
> + ASSERT_GE(session_fd2, 0);
> +
> + /* Verify the filesystem type is LUO_SESSION_MAGIC */
> + ASSERT_EQ(fstatfs(session_fd1, &sfs), 0);
> + EXPECT_EQ(sfs.f_type, LUO_SESSION_MAGIC);
> +
> + /* Verify both sessions share the same inode number */
> + ASSERT_EQ(fstat(session_fd1, &st1), 0);
> + ASSERT_EQ(fstat(session_fd2, &st2), 0);
> + EXPECT_EQ(st1.st_ino, st2.st_ino);
> +
> + ASSERT_EQ(close(session_fd1), 0);
> + ASSERT_EQ(close(session_fd2), 0);
> +}
> +
> TEST_HARNESS_MAIN
> --
> 2.47.3
>

--
Sincerely yours,
Mike.