diff options
Diffstat (limited to 'fs/nfs/super.c')
| -rw-r--r-- | fs/nfs/super.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index f1afee4eea77..6baf9a393466 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
| @@ -2214,7 +2214,7 @@ static int nfs_get_sb(struct file_system_type *fs_type, | |||
| 2214 | } else { | 2214 | } else { |
| 2215 | error = nfs_bdi_register(server); | 2215 | error = nfs_bdi_register(server); |
| 2216 | if (error) | 2216 | if (error) |
| 2217 | goto error_splat_super; | 2217 | goto error_splat_bdi; |
| 2218 | } | 2218 | } |
| 2219 | 2219 | ||
| 2220 | if (!s->s_root) { | 2220 | if (!s->s_root) { |
| @@ -2256,6 +2256,9 @@ out_err_nosb: | |||
| 2256 | error_splat_root: | 2256 | error_splat_root: |
| 2257 | dput(mntroot); | 2257 | dput(mntroot); |
| 2258 | error_splat_super: | 2258 | error_splat_super: |
| 2259 | if (server && !s->s_root) | ||
| 2260 | bdi_unregister(&server->backing_dev_info); | ||
| 2261 | error_splat_bdi: | ||
| 2259 | deactivate_locked_super(s); | 2262 | deactivate_locked_super(s); |
| 2260 | goto out; | 2263 | goto out; |
| 2261 | } | 2264 | } |
| @@ -2326,7 +2329,7 @@ static int nfs_xdev_get_sb(struct file_system_type *fs_type, int flags, | |||
| 2326 | } else { | 2329 | } else { |
| 2327 | error = nfs_bdi_register(server); | 2330 | error = nfs_bdi_register(server); |
| 2328 | if (error) | 2331 | if (error) |
| 2329 | goto error_splat_super; | 2332 | goto error_splat_bdi; |
| 2330 | } | 2333 | } |
| 2331 | 2334 | ||
| 2332 | if (!s->s_root) { | 2335 | if (!s->s_root) { |
| @@ -2363,6 +2366,9 @@ out_err_noserver: | |||
| 2363 | return error; | 2366 | return error; |
| 2364 | 2367 | ||
| 2365 | error_splat_super: | 2368 | error_splat_super: |
| 2369 | if (server && !s->s_root) | ||
| 2370 | bdi_unregister(&server->backing_dev_info); | ||
| 2371 | error_splat_bdi: | ||
| 2366 | deactivate_locked_super(s); | 2372 | deactivate_locked_super(s); |
| 2367 | dprintk("<-- nfs_xdev_get_sb() = %d [splat]\n", error); | 2373 | dprintk("<-- nfs_xdev_get_sb() = %d [splat]\n", error); |
| 2368 | return error; | 2374 | return error; |
| @@ -2578,7 +2584,7 @@ static int nfs4_remote_get_sb(struct file_system_type *fs_type, | |||
| 2578 | } else { | 2584 | } else { |
| 2579 | error = nfs_bdi_register(server); | 2585 | error = nfs_bdi_register(server); |
| 2580 | if (error) | 2586 | if (error) |
| 2581 | goto error_splat_super; | 2587 | goto error_splat_bdi; |
| 2582 | } | 2588 | } |
| 2583 | 2589 | ||
| 2584 | if (!s->s_root) { | 2590 | if (!s->s_root) { |
| @@ -2616,6 +2622,9 @@ out_free: | |||
| 2616 | error_splat_root: | 2622 | error_splat_root: |
| 2617 | dput(mntroot); | 2623 | dput(mntroot); |
| 2618 | error_splat_super: | 2624 | error_splat_super: |
| 2625 | if (server && !s->s_root) | ||
| 2626 | bdi_unregister(&server->backing_dev_info); | ||
| 2627 | error_splat_bdi: | ||
| 2619 | deactivate_locked_super(s); | 2628 | deactivate_locked_super(s); |
| 2620 | goto out; | 2629 | goto out; |
| 2621 | } | 2630 | } |
| @@ -2811,7 +2820,7 @@ static int nfs4_xdev_get_sb(struct file_system_type *fs_type, int flags, | |||
| 2811 | } else { | 2820 | } else { |
| 2812 | error = nfs_bdi_register(server); | 2821 | error = nfs_bdi_register(server); |
| 2813 | if (error) | 2822 | if (error) |
| 2814 | goto error_splat_super; | 2823 | goto error_splat_bdi; |
| 2815 | } | 2824 | } |
| 2816 | 2825 | ||
| 2817 | if (!s->s_root) { | 2826 | if (!s->s_root) { |
| @@ -2847,6 +2856,9 @@ out_err_noserver: | |||
| 2847 | return error; | 2856 | return error; |
| 2848 | 2857 | ||
| 2849 | error_splat_super: | 2858 | error_splat_super: |
| 2859 | if (server && !s->s_root) | ||
| 2860 | bdi_unregister(&server->backing_dev_info); | ||
| 2861 | error_splat_bdi: | ||
| 2850 | deactivate_locked_super(s); | 2862 | deactivate_locked_super(s); |
| 2851 | dprintk("<-- nfs4_xdev_get_sb() = %d [splat]\n", error); | 2863 | dprintk("<-- nfs4_xdev_get_sb() = %d [splat]\n", error); |
| 2852 | return error; | 2864 | return error; |
| @@ -2893,7 +2905,7 @@ static int nfs4_remote_referral_get_sb(struct file_system_type *fs_type, | |||
| 2893 | } else { | 2905 | } else { |
| 2894 | error = nfs_bdi_register(server); | 2906 | error = nfs_bdi_register(server); |
| 2895 | if (error) | 2907 | if (error) |
| 2896 | goto error_splat_super; | 2908 | goto error_splat_bdi; |
| 2897 | } | 2909 | } |
| 2898 | 2910 | ||
| 2899 | if (!s->s_root) { | 2911 | if (!s->s_root) { |
| @@ -2929,6 +2941,9 @@ out_err_noserver: | |||
| 2929 | return error; | 2941 | return error; |
| 2930 | 2942 | ||
| 2931 | error_splat_super: | 2943 | error_splat_super: |
| 2944 | if (server && !s->s_root) | ||
| 2945 | bdi_unregister(&server->backing_dev_info); | ||
| 2946 | error_splat_bdi: | ||
| 2932 | deactivate_locked_super(s); | 2947 | deactivate_locked_super(s); |
| 2933 | dprintk("<-- nfs4_referral_get_sb() = %d [splat]\n", error); | 2948 | dprintk("<-- nfs4_referral_get_sb() = %d [splat]\n", error); |
| 2934 | return error; | 2949 | return error; |
