diff mbox series

[1/1] lib: Add support bcachefs filesystem

Message ID 20231116135546.2599273-1-pvorel@suse.cz (mailing list archive)
State New, archived
Headers show
Series [1/1] lib: Add support bcachefs filesystem | expand

Commit Message

Petr Vorel Nov. 16, 2023, 1:55 p.m. UTC
bcachefs has been merged into v6.7-rc1 [1]. Let's add it's support to
LTP .all_filesystems = 1 and TST_ALL_FILESYSTEMS=1.

[1] https://lwn.net/Articles/934692/

Suggested-by: Cyril Hrubis <chrubis@suse.cz>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
Hi,

this should be merged after v6.7 is released.

So far I haven't tested all LTP tests on bcachefs temporary directory.
I have only tested tests which use .all_filesystems = 1 or TST_ALL_FILESYSTEMS=1.
So far it looks like there are only a few tests failing:

statvfs01.c:44: TFAIL: creat(valid_fname, 0444) failed: ENAMETOOLONG (36)

statx04.c:122: TFAIL: STATX_ATTR_COMPRESSED not supported

fanotify13.c, fanotify15.c and fanotify16.c produce many errors.

I haven't tested on machine with more NUMA nodes, thus
set_mempolicy03.c, set_mempolicy04.c has not been tested.

I also looks like preadv2() is not supported (preadv203.c).

Tested on 6.7.0-rc1-2.g86e46c2-default and bcachefs-tools-24-1.3.

Kind regards,
Petr

 lib/tst_supported_fs_types.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Cyril Hrubis Dec. 7, 2023, 2:33 p.m. UTC | #1
Hi!
> bcachefs has been merged into v6.7-rc1 [1]. Let's add it's support to
> LTP .all_filesystems = 1 and TST_ALL_FILESYSTEMS=1.
> 
> [1] https://lwn.net/Articles/934692/
> 
> Suggested-by: Cyril Hrubis <chrubis@suse.cz>
> Signed-off-by: Petr Vorel <pvorel@suse.cz>
> ---
> Hi,
> 
> this should be merged after v6.7 is released.

Agreed, although it's unlikey that they will pull bcachefs off from the
tree now. Any way I think that we should add the support to the next
release.

> So far I haven't tested all LTP tests on bcachefs temporary directory.
> I have only tested tests which use .all_filesystems = 1 or TST_ALL_FILESYSTEMS=1.
> So far it looks like there are only a few tests failing:
> 
> statvfs01.c:44: TFAIL: creat(valid_fname, 0444) failed: ENAMETOOLONG (36)

That strange, that would mean that statvfs() reports possibly wrong
f_namemax. Looking at the code the f_namemax is initialized to
BCH_NAME_MAX in bch2_statfs().

And the dirent_create_key() does:

        if (name->len > BCH_NAME_MAX)
                return ERR_PTR(-ENAMETOOLONG);

That does not look like there is any room for a failure. Maybe we can
print the buf.f_namemax value in the test and check if it's 512 since
that is the value of BCH_NAME_MAX.

> statx04.c:122: TFAIL: STATX_ATTR_COMPRESSED not supported

This probably just needs:

diff --git a/testcases/kernel/syscalls/statx/statx04.c b/testcases/kernel/syscalls/statx/statx04.c
index 58296bd24..8d14cef8c 100644
--- a/testcases/kernel/syscalls/statx/statx04.c
+++ b/testcases/kernel/syscalls/statx/statx04.c
@@ -97,7 +97,8 @@ static void setup(void)
                expected_mask |= attr_list[i].attr;

        /* STATX_ATTR_COMPRESSED not supported on XFS, TMPFS */
-       if (!strcmp(tst_device->fs_type, "xfs") || !strcmp(tst_device->fs_type, "tmpfs"))
+       if (!strcmp(tst_device->fs_type, "xfs") || !strcmp(tst_device->fs_type, "tmpfs") ||
+           !strcmp(tst_device->fs_type, "bcachefs")
                expected_mask &= ~STATX_ATTR_COMPRESSED;

        /* Attribute support was added to Btrfs statx() in kernel v4.13 */

> fanotify13.c, fanotify15.c and fanotify16.c produce many errors.

That is probably something for Jan Kara or Amir Goldstein.

> I haven't tested on machine with more NUMA nodes, thus
> set_mempolicy03.c, set_mempolicy04.c has not been tested.
Petr Vorel Dec. 7, 2023, 5:55 p.m. UTC | #2
> Hi!
> > bcachefs has been merged into v6.7-rc1 [1]. Let's add it's support to
> > LTP .all_filesystems = 1 and TST_ALL_FILESYSTEMS=1.

> > [1] https://lwn.net/Articles/934692/

> > Suggested-by: Cyril Hrubis <chrubis@suse.cz>
> > Signed-off-by: Petr Vorel <pvorel@suse.cz>
> > ---
> > Hi,

> > this should be merged after v6.7 is released.

> Agreed, although it's unlikey that they will pull bcachefs off from the
> tree now. Any way I think that we should add the support to the next
> release.

Yep, now it's 6.7-rc4. I'll prepare v2

> > So far I haven't tested all LTP tests on bcachefs temporary directory.
> > I have only tested tests which use .all_filesystems = 1 or TST_ALL_FILESYSTEMS=1.
> > So far it looks like there are only a few tests failing:

> > statvfs01.c:44: TFAIL: creat(valid_fname, 0444) failed: ENAMETOOLONG (36)

> That strange, that would mean that statvfs() reports possibly wrong
> f_namemax. Looking at the code the f_namemax is initialized to
> BCH_NAME_MAX in bch2_statfs().

> And the dirent_create_key() does:

>         if (name->len > BCH_NAME_MAX)
>                 return ERR_PTR(-ENAMETOOLONG);

> That does not look like there is any room for a failure. Maybe we can
> print the buf.f_namemax value in the test and check if it's 512 since
> that is the value of BCH_NAME_MAX.

> > statx04.c:122: TFAIL: STATX_ATTR_COMPRESSED not supported

> This probably just needs:

> diff --git a/testcases/kernel/syscalls/statx/statx04.c b/testcases/kernel/syscalls/statx/statx04.c
> index 58296bd24..8d14cef8c 100644
> --- a/testcases/kernel/syscalls/statx/statx04.c
> +++ b/testcases/kernel/syscalls/statx/statx04.c
> @@ -97,7 +97,8 @@ static void setup(void)
>                 expected_mask |= attr_list[i].attr;

>         /* STATX_ATTR_COMPRESSED not supported on XFS, TMPFS */
> -       if (!strcmp(tst_device->fs_type, "xfs") || !strcmp(tst_device->fs_type, "tmpfs"))
> +       if (!strcmp(tst_device->fs_type, "xfs") || !strcmp(tst_device->fs_type, "tmpfs") ||
> +           !strcmp(tst_device->fs_type, "bcachefs")
>                 expected_mask &= ~STATX_ATTR_COMPRESSED;

Obviously skipping works. STATX_ATTR_COMPRESSED is not in fs/bcachefs/ directory in stat->attributes,
unlike on the other fs, so it looks like it's not supported.

>         /* Attribute support was added to Btrfs statx() in kernel v4.13 */

> > fanotify13.c, fanotify15.c and fanotify16.c produce many errors.

> That is probably something for Jan Kara or Amir Goldstein.

Yep, I'll Cc them on v2 and ask for help.

Kind regards,
Petr

> > I haven't tested on machine with more NUMA nodes, thus
> > set_mempolicy03.c, set_mempolicy04.c has not been tested.
Petr Vorel Dec. 7, 2023, 7:22 p.m. UTC | #3
Hi Cyril, all,

BTW we need to add TST_BCACHE_MAGIC to detect used filesystem.
(BCACHEFS_STATFS_MAGIC       0xca451a4e from fs/bcachefs/bcachefs_format.h)
Will be in v2.

Kind regards,
Petr
Petr Vorel May 7, 2024, 5:10 p.m. UTC | #4
Hi all,

> > Hi!
> > > bcachefs has been merged into v6.7-rc1 [1]. Let's add it's support to
> > > LTP .all_filesystems = 1 and TST_ALL_FILESYSTEMS=1.

> > > [1] https://lwn.net/Articles/934692/

> > > Suggested-by: Cyril Hrubis <chrubis@suse.cz>
> > > Signed-off-by: Petr Vorel <pvorel@suse.cz>
> > > ---
> > > Hi,

> > > this should be merged after v6.7 is released.

> > Agreed, although it's unlikey that they will pull bcachefs off from the
> > tree now. Any way I think that we should add the support to the next
> > release.

> Yep, now it's 6.7-rc4. I'll prepare v2

> > > So far I haven't tested all LTP tests on bcachefs temporary directory.
> > > I have only tested tests which use .all_filesystems = 1 or TST_ALL_FILESYSTEMS=1.
> > > So far it looks like there are only a few tests failing:

> > > statvfs01.c:44: TFAIL: creat(valid_fname, 0444) failed: ENAMETOOLONG (36)

> > That strange, that would mean that statvfs() reports possibly wrong
> > f_namemax. Looking at the code the f_namemax is initialized to
> > BCH_NAME_MAX in bch2_statfs().

> > And the dirent_create_key() does:

> >         if (name->len > BCH_NAME_MAX)
> >                 return ERR_PTR(-ENAMETOOLONG);

> > That does not look like there is any room for a failure. Maybe we can
> > print the buf.f_namemax value in the test and check if it's 512 since
> > that is the value of BCH_NAME_MAX.

FYI Unfortunately ENAMETOOLONG is still problem on statvfs() on bcachefs.

Kind regards,
Petr

...
diff mbox series

Patch

diff --git a/lib/tst_supported_fs_types.c b/lib/tst_supported_fs_types.c
index d4911fa3b..369836717 100644
--- a/lib/tst_supported_fs_types.c
+++ b/lib/tst_supported_fs_types.c
@@ -1,6 +1,7 @@ 
 // SPDX-License-Identifier: GPL-2.0-or-later
 /*
  * Copyright (c) 2017 Cyril Hrubis <chrubis@suse.cz>
+ * Copyright (c) Linux Test Project, 2018-2023
  */
 
 #include <stdio.h>
@@ -24,6 +25,7 @@  static const char *const fs_type_whitelist[] = {
 	"ext4",
 	"xfs",
 	"btrfs",
+	"bcachefs",
 	"vfat",
 	"exfat",
 	"ntfs",