struct super_block cleanup - hfs
Subsystems (2)
PATCH 1/1 struct super_block cleanup - hfs
Seperates hfs_sb_info from struct super_block.
Signature · 1 line
Brian Gerst
fs/hfs/super.c +14 -2
@@ -178,6 +178,9 @@/* restore default blocksize for the device */ set_blocksize (sb->s_dev,BLOCK_SIZE ); + +kfree (sb->u.generic_sbp); + sb->u.generic_sbp =NULL ; }/*
@@ -443,6 +446,7 @@*/ int hfs_fill_super (struct super_block *s,void *data,int silent) { +struct hfs_sb_info *sbi;struct hfs_mdb *mdb;struct hfs_cat_key key;kdev_t dev = s->s_dev;
@@ -450,7 +454,13 @@struct inode *root_inode;int part; -if (!parse_options ((char *)data,HFS_SB (s), &part)) { + sbi =kmalloc (sizeof (struct hfs_sb_info ),GFP_KERNEL ); +if (!sbi) +return -ENOMEM ; + s->u.generic_sbp = sbi; +memset (sbi,0 ,sizeof (struct hfs_sb_info )); + +if (!parse_options ((char *)data, sbi, &part)) {hfs_warn ("hfs_fs: unable to parse mount options.\n" ); goto bail3; }
@@ -485,7 +495,7 @@ goto bail2; } -HFS_SB (s)->s_mdb = mdb; + sbi->s_mdb = mdb;if (HFS_ITYPE (mdb->next_id) !=0 ) {hfs_warn ("hfs_fs: too many files.\n" ); goto bail1;
@@ -522,6 +532,8 @@ bail2:set_blocksize (dev,BLOCK_SIZE ); bail3: +kfree (sbi); + sb->u.generic_sbp =NULL ;return -EINVAL ; }
include/linux/fs.h +0 -2
@@ -653,7 +653,6 @@#include <linux/affs_fs_sb.h> #include <linux/ufs_fs_sb.h> #include <linux/romfs_fs_sb.h> -#include <linux/hfs_fs_sb.h> #include <linux/adfs_fs_sb.h> #include <linux/reiserfs_fs_sb.h> #include <linux/bfs_fs_sb.h>
@@ -703,7 +702,6 @@struct ufs_sb_info ufs_sb;struct shmem_sb_info shmem_sb;struct romfs_sb_info romfs_sb; -struct hfs_sb_info hfs_sb;struct adfs_sb_info adfs_sb;struct reiserfs_sb_info reiserfs_sb;struct bfs_sb_info bfs_sb;
include/linux/hfs_fs.h +6 -1
@@ -318,12 +318,17 @@extern void hfs_tolower (unsigned char *,int );#include <linux/hfs_fs_i.h> +#include <linux/hfs_fs_sb.h> static inline struct hfs_inode_info *HFS_I (struct inode *inode) { return list_entry(inode, struct hfs_inode_info, vfs_inode); } -#define HFS_SB (X ) (&((X)->u.hfs_sb)) + +static inline struct hfs_sb_info *HFS_SB (struct super_block *sb) +{ +return sb->u.generic_sbp; +}static inline void hfs_nameout (struct inode *dir,struct hfs_name *out,const char *in,int len) {