Re: [PATCH RFC 5/6] fs: introduce a shutdown_bdev super block operation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





在 2025/6/24 18:21, Christian Brauner 写道:
On Tue, Jun 24, 2025 at 06:57:08AM +0930, Qu Wenruo wrote:


在 2025/6/23 23:27, Christoph Hellwig 写道:
On Mon, Jun 23, 2025 at 12:56:28PM +0200, Christian Brauner wrote:
          void (*shutdown)(struct super_block *sb);
+       void (*drop_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */);
   };

You might want to drop a block device independent of whether the device
was somehow lost. So I find that a bit more flexible.

Drop is weird word for what is happening here, and if it wasn't for the
context in this thread I'd expect it to be about refcounting in Linux.

When the VFS/libfs does an upcall into the file system to notify it
that a device is gone that's pretty much a device loss.  I'm not married
to the exact name, but drop seems like a pretty bad choice.

What about a more common used term, mark_dead()?

It's already used in blk_holder_ops, and I'd say it's more straighforward to
me, compared to shutdown()/goingdown().

But it's not about the superblock going down necessarily. It's about the
device going away for whatever reason:

void (*yank_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */);
void (*pull_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */);
void (*unplug_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */);
void (*remove_bdev)(struct super_block *sb, struct block_device *bdev /* , unsigned int flags/reason maybe too ? */);

All sound good to me, although the last one sounds better.


On a single device superblock unplugging that device would obviously
cause an actual shutdown. On multi-device superblocks it doesn't always.

(That brings me to another thought. Is there a use-case for knowing in
advance whether removing a device would shut down the superblock?

Maybe another interface like can_remove_bdev()?

It's not hard for btrfs to provide it, we already have a check function btrfs_check_rw_degradable() to do that.

Although I'd say, that will be something way down the road.

We even don't have a proper way to let end user configure the device loss behavior. E.g. some end users may prefer a full shutdown to be extra cautious, other than continue degraded.

Thanks,
Qu

Because then the ability to probe whether a device can be safely
removed or an option to only remove the device if it can be removed
without killing the superblock would be a natural extension.)




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux