Skip to content

Commit

Permalink
[PATCH] restore sane ->umount_begin() API
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Al Viro committed Apr 25, 2008
1 parent 78d31a3 commit 42faad9
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 22 deletions.
7 changes: 3 additions & 4 deletions fs/9p/vfs_super.c
Original file line number Diff line number Diff line change
Expand Up @@ -224,12 +224,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 const struct super_operations v9fs_super_ops = {
Expand Down
7 changes: 2 additions & 5 deletions fs/cifs/cifsfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -466,14 +466,11 @@ static struct quotactl_ops cifs_quotactl_ops = {
};
#endif

static void cifs_umount_begin(struct vfsmount *vfsmnt, int flags)
static void cifs_umount_begin(struct super_block *sb)
{
struct cifs_sb_info *cifs_sb;
struct cifs_sb_info *cifs_sb = CIFS_SB(sb);
struct cifsTconInfo *tcon;

if (!(flags & MNT_FORCE))
return;
cifs_sb = CIFS_SB(vfsmnt->mnt_sb);
if (cifs_sb == NULL)
return;

Expand Down
5 changes: 2 additions & 3 deletions fs/fuse/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,9 @@ struct inode *fuse_iget(struct super_block *sb, unsigned long nodeid,
return inode;
}

static void fuse_umount_begin(struct vfsmount *vfsmnt, int flags)
static void fuse_umount_begin(struct super_block *sb)
{
if (flags & MNT_FORCE)
fuse_abort_conn(get_fuse_conn_super(vfsmnt->mnt_sb));
fuse_abort_conn(get_fuse_conn_super(sb));
}

static void fuse_send_destroy(struct fuse_conn *fc)
Expand Down
9 changes: 5 additions & 4 deletions fs/namespace.c
Original file line number Diff line number Diff line change
Expand Up @@ -1061,10 +1061,11 @@ static int do_umount(struct vfsmount *mnt, int flags)
* about for the moment.
*/

lock_kernel();
if (sb->s_op->umount_begin)
sb->s_op->umount_begin(mnt, flags);
unlock_kernel();
if (flags & MNT_FORCE && sb->s_op->umount_begin) {
lock_kernel();
sb->s_op->umount_begin(sb);
unlock_kernel();
}

/*
* No sense to grab the lock for this test, but test itself looks
Expand Down
8 changes: 3 additions & 5 deletions fs/nfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ static match_table_t nfs_secflavor_tokens = {
};


static void nfs_umount_begin(struct vfsmount *, int);
static void nfs_umount_begin(struct super_block *);
static int nfs_statfs(struct dentry *, struct kstatfs *);
static int nfs_show_options(struct seq_file *, struct vfsmount *);
static int nfs_show_stats(struct seq_file *, struct vfsmount *);
Expand Down Expand Up @@ -647,13 +647,11 @@ static int nfs_show_stats(struct seq_file *m, struct vfsmount *mnt)
* Begin unmount by attempting to remove all automounted mountpoints we added
* in response to xdev traversals and referrals
*/
static void nfs_umount_begin(struct vfsmount *vfsmnt, int flags)
static void nfs_umount_begin(struct super_block *sb)
{
struct nfs_server *server = NFS_SB(vfsmnt->mnt_sb);
struct nfs_server *server = NFS_SB(sb);
struct rpc_clnt *rpc;

if (!(flags & MNT_FORCE))
return;
/* -EIO all pending I/O */
rpc = server->client_acl;
if (!IS_ERR(rpc))
Expand Down
2 changes: 1 addition & 1 deletion include/linux/fs.h
Original file line number Diff line number Diff line change
Expand Up @@ -1308,7 +1308,7 @@ struct super_operations {
int (*statfs) (struct dentry *, struct kstatfs *);
int (*remount_fs) (struct super_block *, int *, char *);
void (*clear_inode) (struct inode *);
void (*umount_begin) (struct vfsmount *, int);
void (*umount_begin) (struct super_block *);

int (*show_options)(struct seq_file *, struct vfsmount *);
int (*show_stats)(struct seq_file *, struct vfsmount *);
Expand Down

0 comments on commit 42faad9

Please sign in to comment.