diff options
Diffstat (limited to 'fs/nfs/super.c')
| -rw-r--r-- | fs/nfs/super.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 6717200923fe..d2d67781c579 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
| @@ -683,9 +683,12 @@ static int nfs_show_stats(struct seq_file *m, struct vfsmount *mnt) | |||
| 683 | */ | 683 | */ |
| 684 | static void nfs_umount_begin(struct super_block *sb) | 684 | static void nfs_umount_begin(struct super_block *sb) |
| 685 | { | 685 | { |
| 686 | struct nfs_server *server = NFS_SB(sb); | 686 | struct nfs_server *server; |
| 687 | struct rpc_clnt *rpc; | 687 | struct rpc_clnt *rpc; |
| 688 | 688 | ||
| 689 | lock_kernel(); | ||
| 690 | |||
| 691 | server = NFS_SB(sb); | ||
| 689 | /* -EIO all pending I/O */ | 692 | /* -EIO all pending I/O */ |
| 690 | rpc = server->client_acl; | 693 | rpc = server->client_acl; |
| 691 | if (!IS_ERR(rpc)) | 694 | if (!IS_ERR(rpc)) |
| @@ -693,6 +696,8 @@ static void nfs_umount_begin(struct super_block *sb) | |||
| 693 | rpc = server->client; | 696 | rpc = server->client; |
| 694 | if (!IS_ERR(rpc)) | 697 | if (!IS_ERR(rpc)) |
| 695 | rpc_killall_tasks(rpc); | 698 | rpc_killall_tasks(rpc); |
| 699 | |||
| 700 | unlock_kernel(); | ||
| 696 | } | 701 | } |
| 697 | 702 | ||
| 698 | /* | 703 | /* |
| @@ -2106,8 +2111,7 @@ out_err_nosb: | |||
| 2106 | error_splat_root: | 2111 | error_splat_root: |
| 2107 | dput(mntroot); | 2112 | dput(mntroot); |
| 2108 | error_splat_super: | 2113 | error_splat_super: |
| 2109 | up_write(&s->s_umount); | 2114 | deactivate_locked_super(s); |
| 2110 | deactivate_super(s); | ||
| 2111 | goto out; | 2115 | goto out; |
| 2112 | } | 2116 | } |
| 2113 | 2117 | ||
| @@ -2203,8 +2207,7 @@ out_err_noserver: | |||
| 2203 | return error; | 2207 | return error; |
| 2204 | 2208 | ||
| 2205 | error_splat_super: | 2209 | error_splat_super: |
| 2206 | up_write(&s->s_umount); | 2210 | deactivate_locked_super(s); |
| 2207 | deactivate_super(s); | ||
| 2208 | dprintk("<-- nfs_xdev_get_sb() = %d [splat]\n", error); | 2211 | dprintk("<-- nfs_xdev_get_sb() = %d [splat]\n", error); |
| 2209 | return error; | 2212 | return error; |
| 2210 | } | 2213 | } |
| @@ -2464,8 +2467,7 @@ out_free: | |||
| 2464 | error_splat_root: | 2467 | error_splat_root: |
| 2465 | dput(mntroot); | 2468 | dput(mntroot); |
| 2466 | error_splat_super: | 2469 | error_splat_super: |
| 2467 | up_write(&s->s_umount); | 2470 | deactivate_locked_super(s); |
| 2468 | deactivate_super(s); | ||
| 2469 | goto out; | 2471 | goto out; |
| 2470 | } | 2472 | } |
| 2471 | 2473 | ||
| @@ -2559,8 +2561,7 @@ out_err_noserver: | |||
| 2559 | return error; | 2561 | return error; |
| 2560 | 2562 | ||
| 2561 | error_splat_super: | 2563 | error_splat_super: |
| 2562 | up_write(&s->s_umount); | 2564 | deactivate_locked_super(s); |
| 2563 | deactivate_super(s); | ||
| 2564 | dprintk("<-- nfs4_xdev_get_sb() = %d [splat]\n", error); | 2565 | dprintk("<-- nfs4_xdev_get_sb() = %d [splat]\n", error); |
| 2565 | return error; | 2566 | return error; |
| 2566 | } | 2567 | } |
| @@ -2644,8 +2645,7 @@ out_err_noserver: | |||
| 2644 | return error; | 2645 | return error; |
| 2645 | 2646 | ||
| 2646 | error_splat_super: | 2647 | error_splat_super: |
| 2647 | up_write(&s->s_umount); | 2648 | deactivate_locked_super(s); |
| 2648 | deactivate_super(s); | ||
| 2649 | dprintk("<-- nfs4_referral_get_sb() = %d [splat]\n", error); | 2649 | dprintk("<-- nfs4_referral_get_sb() = %d [splat]\n", error); |
| 2650 | return error; | 2650 | return error; |
| 2651 | } | 2651 | } |
