* [PATCH] bcachefs: preserve device path as device name
@ 2023-11-16 17:13 Brian Foster
2023-11-16 21:11 ` Kent Overstreet
0 siblings, 1 reply; 2+ messages in thread
From: Brian Foster @ 2023-11-16 17:13 UTC (permalink / raw)
To: linux-bcachefs
Various userspace scripts/tools may expect mount entries in
/proc/mounts to reflect the device path names used to mount the
associated filesystem. bcachefs seems to normalize the device path
to the underlying device name based on the block device. This
confuses tools like fstests when the test devices might be lvm or
device-mapper based.
The default behavior for show_vfsmnt() appers to be to use the
string passed to alloc_vfsmnt(), so tweak bcachefs to copy the path
at device superblock read time and to display it via
->show_devname().
Signed-off-by: Brian Foster <bfoster@redhat.com>
---
I was looking into the freeze related generic/459 test failures and it
seems like there are two issues. One is the same reason fstests seems to
fall over any time the test/scratch devices are lvm based, which is that
bcachefs will show the /dev/dm-N devices in mount output vs. the
/dev/mapper/xxx format that the test scripts use. AFAICT most other
filesystems present the mount entry device based on the device path with
a slight difference with btrfs, which does the same thing but only shows
the "latest" device rather than listing all devices associated with the
fs.
The second issue is I think more of a test problem in that it assumes fs
shutdown reflects as "ro" mount status, which isn't always true for
bcachefs (or XFS). I have a tweak to the test to try and improve that
particular check, which combined with this patch allows the test to pass
reliably on bcachefs. The scope of fstests changes probably depends on
what we do on the kernel side, however, so I wanted to see what thoughts
we have on something like this. Hm?
Brian
fs/bcachefs/fs.c | 3 +--
fs/bcachefs/super-io.c | 5 +++++
fs/bcachefs/super_types.h | 1 +
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c
index f76d403ccb76..424c3da188bb 100644
--- a/fs/bcachefs/fs.c
+++ b/fs/bcachefs/fs.c
@@ -1667,8 +1667,7 @@ static int bch2_show_devname(struct seq_file *seq, struct dentry *root)
if (!first)
seq_putc(seq, ':');
first = false;
- seq_puts(seq, "/dev/");
- seq_puts(seq, ca->name);
+ seq_puts(seq, ca->disk_sb.sb_name);
}
return 0;
diff --git a/fs/bcachefs/super-io.c b/fs/bcachefs/super-io.c
index f4cad903f4d6..f3e12f7979d5 100644
--- a/fs/bcachefs/super-io.c
+++ b/fs/bcachefs/super-io.c
@@ -166,6 +166,7 @@ void bch2_free_super(struct bch_sb_handle *sb)
if (!IS_ERR_OR_NULL(sb->bdev))
blkdev_put(sb->bdev, sb->holder);
kfree(sb->holder);
+ kfree(sb->sb_name);
kfree(sb->sb);
memset(sb, 0, sizeof(*sb));
@@ -675,6 +676,10 @@ int bch2_read_super(const char *path, struct bch_opts *opts,
if (!sb->holder)
return -ENOMEM;
+ sb->sb_name = kstrdup(path, GFP_KERNEL);
+ if (!sb->sb_name)
+ return -ENOMEM;
+
#ifndef __KERNEL__
if (opt_get(*opts, direct_io) == false)
sb->mode |= BLK_OPEN_BUFFERED;
diff --git a/fs/bcachefs/super_types.h b/fs/bcachefs/super_types.h
index 7dda4985b99f..9c1fd4ca2b10 100644
--- a/fs/bcachefs/super_types.h
+++ b/fs/bcachefs/super_types.h
@@ -5,6 +5,7 @@
struct bch_sb_handle {
struct bch_sb *sb;
struct block_device *bdev;
+ char *sb_name;
struct bio *bio;
void *holder;
size_t buffer_size;
--
2.41.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] bcachefs: preserve device path as device name
2023-11-16 17:13 [PATCH] bcachefs: preserve device path as device name Brian Foster
@ 2023-11-16 21:11 ` Kent Overstreet
0 siblings, 0 replies; 2+ messages in thread
From: Kent Overstreet @ 2023-11-16 21:11 UTC (permalink / raw)
To: Brian Foster; +Cc: linux-bcachefs
On Thu, Nov 16, 2023 at 12:13:43PM -0500, Brian Foster wrote:
> Various userspace scripts/tools may expect mount entries in
> /proc/mounts to reflect the device path names used to mount the
> associated filesystem. bcachefs seems to normalize the device path
> to the underlying device name based on the block device. This
> confuses tools like fstests when the test devices might be lvm or
> device-mapper based.
>
> The default behavior for show_vfsmnt() appers to be to use the
> string passed to alloc_vfsmnt(), so tweak bcachefs to copy the path
> at device superblock read time and to display it via
> ->show_devname().
>
> Signed-off-by: Brian Foster <bfoster@redhat.com>
Looks good - applied
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-11-16 21:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-16 17:13 [PATCH] bcachefs: preserve device path as device name Brian Foster
2023-11-16 21:11 ` Kent Overstreet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox