Famfs needs a slightly different kill_super variant than already existed. Putting it local to famfs would require exporting d_genocide(); this seemed a bit cleaner. Signed-off-by: John Groves <john@xxxxxxxxxx> --- fs/super.c | 9 +++++++++ include/linux/fs.h | 1 + 2 files changed, 10 insertions(+) diff --git a/fs/super.c b/fs/super.c index 69ce6c600968..cd276d30b522 100644 --- a/fs/super.c +++ b/fs/super.c @@ -1236,6 +1236,15 @@ void kill_litter_super(struct super_block *sb) } EXPORT_SYMBOL(kill_litter_super); +void kill_char_super(struct super_block *sb) +{ + if (sb->s_root) + d_genocide(sb->s_root); + generic_shutdown_super(sb); + kill_super_notify(sb); +} +EXPORT_SYMBOL(kill_char_super); + int set_anon_super_fc(struct super_block *sb, struct fs_context *fc) { return set_anon_super(sb, NULL); diff --git a/include/linux/fs.h b/include/linux/fs.h index 8dfd53b52744..cc586f30397d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2511,6 +2511,7 @@ void generic_shutdown_super(struct super_block *sb); void kill_block_super(struct super_block *sb); void kill_anon_super(struct super_block *sb); void kill_litter_super(struct super_block *sb); +void kill_char_super(struct super_block *sb); void deactivate_super(struct super_block *sb); void deactivate_locked_super(struct super_block *sb); int set_anon_super(struct super_block *s, void *data); -- 2.43.0