Unverified Commit e2d74c47 authored by Ye Bin's avatar Ye Bin Committed by Konstantin Komarov
Browse files

fs/ntfs3: Factor out ntfs_{create/remove}_procdir()



Introduce ntfs_create_procdir() and ntfs_remove_procdir() to
create/remove "/proc/fs/ntfs3/.."

Signed-off-by: default avatarYe Bin <yebin10@huawei.com>
Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent 285cec31
Loading
Loading
Loading
Loading
+36 −23
Original line number Diff line number Diff line
@@ -555,6 +555,40 @@ static const struct proc_ops ntfs3_label_fops = {
	.proc_write = ntfs3_label_write,
};

static void ntfs_create_procdir(struct super_block *sb)
{
	struct proc_dir_entry *e;

	if (!proc_info_root)
		return;

	e = proc_mkdir(sb->s_id, proc_info_root);
	if (e) {
		struct ntfs_sb_info *sbi = sb->s_fs_info;

		proc_create_data("volinfo", 0444, e,
				 &ntfs3_volinfo_fops, sb);
		proc_create_data("label", 0644, e,
				 &ntfs3_label_fops, sb);
		sbi->procdir = e;
	}
}

static void ntfs_remove_procdir(struct super_block *sb)
{
	struct ntfs_sb_info *sbi = sb->s_fs_info;

	if (!sbi->procdir)
		return;

	remove_proc_entry("label", sbi->procdir);
	remove_proc_entry("volinfo", sbi->procdir);
	remove_proc_entry(sb->s_id, proc_info_root);
	sbi->procdir = NULL;
}
#else
static void ntfs_create_procdir(struct super_block *sb) {}
static void ntfs_remove_procdir(struct super_block *sb) {}
#endif

static struct kmem_cache *ntfs_inode_cachep;
@@ -644,15 +678,7 @@ static void ntfs_put_super(struct super_block *sb)
{
	struct ntfs_sb_info *sbi = sb->s_fs_info;

#ifdef CONFIG_PROC_FS
	// Remove /proc/fs/ntfs3/..
	if (sbi->procdir) {
		remove_proc_entry("label", sbi->procdir);
		remove_proc_entry("volinfo", sbi->procdir);
		remove_proc_entry(sb->s_id, proc_info_root);
		sbi->procdir = NULL;
	}
#endif
	ntfs_remove_procdir(sb);

	/* Mark rw ntfs as clear, if possible. */
	ntfs_set_state(sbi, NTFS_DIRTY_CLEAR);
@@ -1590,20 +1616,7 @@ static int ntfs_fill_super(struct super_block *sb, struct fs_context *fc)
		kfree(boot2);
	}

#ifdef CONFIG_PROC_FS
	/* Create /proc/fs/ntfs3/.. */
	if (proc_info_root) {
		struct proc_dir_entry *e = proc_mkdir(sb->s_id, proc_info_root);
		static_assert((S_IRUGO | S_IWUSR) == 0644);
		if (e) {
			proc_create_data("volinfo", S_IRUGO, e,
					 &ntfs3_volinfo_fops, sb);
			proc_create_data("label", S_IRUGO | S_IWUSR, e,
					 &ntfs3_label_fops, sb);
			sbi->procdir = e;
		}
	}
#endif
	ntfs_create_procdir(sb);

	if (is_legacy_ntfs(sb))
		sb->s_flags |= SB_RDONLY;