// 回收超级块 static void myfs_kill_sb(struct super_block *sb) { kfree(sb->s_fs_info); if (invalidate_inodes(sb, 1)) // 强制毁灭所有inode及其dirty页 printk("myfs: Eliminate all inodes finished partially!\n"); kill_litter_super(sb); }
static void devpts_kill_sb(struct super_block *sb) { struct pts_fs_info *fsi = DEVPTS_SB(sb); kfree(fsi); kill_litter_super(sb); }
void gfs_kill_super(struct super_block *sb) { struct gfs_super_info *sbi = (struct gfs_super_info *)sb->s_fs_info; gfs_sysfs_exit_sb(sbi); kill_litter_super(sb); }
static void devpts_kill_sb(struct super_block *sb) { struct pts_fs_info *fsi = DEVPTS_SB(sb); ida_destroy(&fsi->allocated_ptys); kfree(fsi); kill_litter_super(sb); }
static void efivarfs_kill_sb(struct super_block *sb) { kill_litter_super(sb); efivarfs_sb = NULL; /* Remove all entries and destroy */ __efivar_entry_iter(efivarfs_destroy, &efivarfs_list, NULL, NULL); }
void sjfs_kill_sb(struct super_block *sb) { printk("sjfs_kill_sb\n"); kfree(sb->s_fs_info); // used for in memory fs kill_litter_super(sb); // shutdown our link to the userspace app? }
static void hypfs_kill_super(struct super_block *sb) { struct hypfs_sb_info *sb_info = sb->s_fs_info; if (sb->s_root) hypfs_delete_tree(sb->s_root); if (sb_info->update_file) hypfs_remove(sb_info->update_file); kfree(sb->s_fs_info); sb->s_fs_info = NULL; kill_litter_super(sb); }
void autofs_kill_sb(struct super_block *sb) { struct autofs_sb_info *sbi = autofs_sbi(sb); /* * In the event of a failure in get_sb_nodev the superblock * info is not present so nothing else has been setup, so * just call kill_anon_super when we are called from * deactivate_super. */ if (sbi) { /* Free wait queues, close pipe */ autofs_catatonic_mode(sbi); put_pid(sbi->oz_pgrp); } pr_debug("shutting down\n"); kill_litter_super(sb); if (sbi) kfree_rcu(sbi, rcu); }
void autofs4_kill_sb(struct super_block *sb) { struct autofs_sb_info *sbi = autofs4_sbi(sb); /* * In the event of a failure in get_sb_nodev the superblock * info is not present so nothing else has been setup, so * just call kill_anon_super when we are called from * deactivate_super. */ if (!sbi) goto out_kill_sb; /* Free wait queues, close pipe */ autofs4_catatonic_mode(sbi); sb->s_fs_info = NULL; kfree(sbi); out_kill_sb: DPRINTK("shutting down"); kill_litter_super(sb); }
static void ramfs_kill_sb(struct super_block *sb) { kfree(sb->s_fs_info); kill_litter_super(sb); }
void sjfs_kill_sb(struct super_block *sb) { // used for in memory fs kill_litter_super(sb); // shutdown our link to the userspace app? }