X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2F9p%2Fvfs_super.c;h=61c599b4a1e32de2f7053408e64657067450d58e;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=63320d4e15d260fc0e7800d2bc0d2a54141666ff;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c index 63320d4e1..61c599b4a 100644 --- a/fs/9p/vfs_super.c +++ b/fs/9p/vfs_super.c @@ -25,6 +25,7 @@ */ #include +#include #include #include #include @@ -98,13 +99,12 @@ v9fs_fill_super(struct super_block *sb, struct v9fs_session_info *v9ses, * @flags: mount flags * @dev_name: device name that was mounted * @data: mount options - * @mnt: mountpoint record to be instantiated * */ -static int v9fs_get_sb(struct file_system_type *fs_type, int flags, - const char *dev_name, void *data, - struct vfsmount *mnt) +static struct super_block *v9fs_get_sb(struct file_system_type + *fs_type, int flags, + const char *dev_name, void *data) { struct super_block *sb = NULL; struct v9fs_fcall *fcall = NULL; @@ -123,19 +123,17 @@ static int v9fs_get_sb(struct file_system_type *fs_type, int flags, v9ses = kzalloc(sizeof(struct v9fs_session_info), GFP_KERNEL); if (!v9ses) - return -ENOMEM; + return ERR_PTR(-ENOMEM); if ((newfid = v9fs_session_init(v9ses, dev_name, data)) < 0) { dprintk(DEBUG_ERROR, "problem initiating session\n"); - retval = newfid; + sb = ERR_PTR(newfid); goto out_free_session; } sb = sget(fs_type, NULL, v9fs_set_super, v9ses); - if (IS_ERR(sb)) { - retval = PTR_ERR(sb); + if (IS_ERR(sb)) goto out_close_session; - } v9fs_fill_super(sb, v9ses, flags); inode = v9fs_get_inode(sb, S_IFDIR | mode); @@ -186,19 +184,19 @@ static int v9fs_get_sb(struct file_system_type *fs_type, int flags, goto put_back_sb; } - return simple_set_mnt(mnt, sb); + return sb; out_close_session: v9fs_session_close(v9ses); out_free_session: kfree(v9ses); - return retval; + return sb; put_back_sb: /* deactivate_super calls v9fs_kill_super which will frees the rest */ up_write(&sb->s_umount); deactivate_super(sb); - return retval; + return ERR_PTR(retval); } /** @@ -255,12 +253,11 @@ static int v9fs_show_options(struct seq_file *m, struct vfsmount *mnt) } static void -v9fs_umount_begin(struct vfsmount *vfsmnt, int flags) +v9fs_umount_begin(struct super_block *sb) { - struct v9fs_session_info *v9ses = vfsmnt->mnt_sb->s_fs_info; + struct v9fs_session_info *v9ses = sb->s_fs_info; - if (flags & MNT_FORCE) - v9fs_session_cancel(v9ses); + v9fs_session_cancel(v9ses); } static struct super_operations v9fs_super_ops = {