On Tue, Jul 08, 2025 at 12:36:48PM +0930, Qu Wenruo wrote: > 在 2025/7/8 11:39, Qu Wenruo 写道: > > 在 2025/7/8 10:15, Darrick J. Wong 写道: > > > > Yes, the naming is not perfect and mixing cause and action, but the end > > > > result is still a more generic and less duplicated code base. > > > > > > I think dchinner makes a good point that if your filesystem can do > > > something clever on device removal, it should provide its own block > > > device holder ops instead of using fs_holder_ops. > > > > Then re-implement a lot of things like bdev_super_lock()?
IDGI. Simply add: EXPORT_SYMBOL_GPL(get_bdev_super); And the problem is solved. > > I'd prefer not. > > > > > > fs_holder_ops solves a lot of things like handling mounting/inactive > > fses, and pushing it back again to the fs code is just causing more > > duplication. This is all encapsulated in get_bdev_super(), so btrfs doesn't need to implement any of this. get_bdev_super/deactivate_super is the API you should be using with the blk_holder_ops methods. > > Not really worthy if we only want a single different behavior. This is the *3rd* different behaviour for ->mark_dead. We have the generic behaviour, the bcachefs behaviour, and now the btrfs behaviour (whatever that may be). > > Thus I strongly prefer to do with the existing fs_holder_ops, no matter > > if it's using/renaming the shutdown() callback, or a new callback. > > Previously Christoph is against a new ->remove_bdev() callback, as it is > conflicting with the existing ->shutdown(). > > So what about a new ->handle_bdev_remove() callback, that we do something > like this inside fs_bdev_mark_dead(): > > { > bdev_super_lock(); > if (!surprise) > sync_filesystem(); > > if (s_op->handle_bdev_remove) { > ret = s_op->handle_bdev_remove(); > if (!ret) { > super_unlock_shared(); > return; > } > } > shrink_dcache_sb(); > evict_inodes(); > if (s_op->shutdown) > s_op->shutdown(); > } > > So that the new ->handle_bdev_remove() is not conflicting with > ->shutdown() but an optional one. > > And if the fs can not handle the removal, just let > ->handle_bdev_remove() return an error so that we fallback to the existing > shutdown routine. > > Would this be more acceptable? No. -Dave. -- Dave Chinner da...@fromorbit.com _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel