|
@@ -480,6 +480,16 @@ nfsd4_init_recdir(struct net *net)
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
+static void
|
|
|
+nfsd4_shutdown_recdir(struct net *net)
|
|
|
+{
|
|
|
+ struct nfsd_net *nn = net_generic(net, nfsd_net_id);
|
|
|
+
|
|
|
+ if (!nn->rec_file)
|
|
|
+ return;
|
|
|
+ fput(nn->rec_file);
|
|
|
+ nn->rec_file = NULL;
|
|
|
+}
|
|
|
|
|
|
static int
|
|
|
nfs4_legacy_state_init(struct net *net)
|
|
@@ -513,10 +523,13 @@ nfsd4_load_reboot_recovery_data(struct net *net)
|
|
|
int status;
|
|
|
|
|
|
status = nfsd4_init_recdir(net);
|
|
|
- if (!status)
|
|
|
- status = nfsd4_recdir_load(net);
|
|
|
if (status)
|
|
|
- printk(KERN_ERR "NFSD: Failure reading reboot recovery data\n");
|
|
|
+ return status;
|
|
|
+
|
|
|
+ status = nfsd4_recdir_load(net);
|
|
|
+ if (status)
|
|
|
+ nfsd4_shutdown_recdir(net);
|
|
|
+
|
|
|
return status;
|
|
|
}
|
|
|
|
|
@@ -546,22 +559,13 @@ err:
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
-static void
|
|
|
-nfsd4_shutdown_recdir(struct nfsd_net *nn)
|
|
|
-{
|
|
|
- if (!nn->rec_file)
|
|
|
- return;
|
|
|
- fput(nn->rec_file);
|
|
|
- nn->rec_file = NULL;
|
|
|
-}
|
|
|
-
|
|
|
static void
|
|
|
nfsd4_legacy_tracking_exit(struct net *net)
|
|
|
{
|
|
|
struct nfsd_net *nn = net_generic(net, nfsd_net_id);
|
|
|
|
|
|
nfs4_release_reclaim(nn);
|
|
|
- nfsd4_shutdown_recdir(nn);
|
|
|
+ nfsd4_shutdown_recdir(net);
|
|
|
nfs4_legacy_state_shutdown(net);
|
|
|
}
|
|
|
|