diff options
-rw-r--r-- | fs/nfsd/nfs4recover.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c index e37ac1c53adb..bb66037b63a0 100644 --- a/fs/nfsd/nfs4recover.c +++ b/fs/nfsd/nfs4recover.c | |||
@@ -480,6 +480,16 @@ nfsd4_init_recdir(struct net *net) | |||
480 | return status; | 480 | return status; |
481 | } | 481 | } |
482 | 482 | ||
483 | static void | ||
484 | nfsd4_shutdown_recdir(struct net *net) | ||
485 | { | ||
486 | struct nfsd_net *nn = net_generic(net, nfsd_net_id); | ||
487 | |||
488 | if (!nn->rec_file) | ||
489 | return; | ||
490 | fput(nn->rec_file); | ||
491 | nn->rec_file = NULL; | ||
492 | } | ||
483 | 493 | ||
484 | static int | 494 | static int |
485 | nfs4_legacy_state_init(struct net *net) | 495 | nfs4_legacy_state_init(struct net *net) |
@@ -513,10 +523,13 @@ nfsd4_load_reboot_recovery_data(struct net *net) | |||
513 | int status; | 523 | int status; |
514 | 524 | ||
515 | status = nfsd4_init_recdir(net); | 525 | status = nfsd4_init_recdir(net); |
516 | if (!status) | ||
517 | status = nfsd4_recdir_load(net); | ||
518 | if (status) | 526 | if (status) |
519 | printk(KERN_ERR "NFSD: Failure reading reboot recovery data\n"); | 527 | return status; |
528 | |||
529 | status = nfsd4_recdir_load(net); | ||
530 | if (status) | ||
531 | nfsd4_shutdown_recdir(net); | ||
532 | |||
520 | return status; | 533 | return status; |
521 | } | 534 | } |
522 | 535 | ||
@@ -547,21 +560,12 @@ err: | |||
547 | } | 560 | } |
548 | 561 | ||
549 | static void | 562 | static void |
550 | nfsd4_shutdown_recdir(struct nfsd_net *nn) | ||
551 | { | ||
552 | if (!nn->rec_file) | ||
553 | return; | ||
554 | fput(nn->rec_file); | ||
555 | nn->rec_file = NULL; | ||
556 | } | ||
557 | |||
558 | static void | ||
559 | nfsd4_legacy_tracking_exit(struct net *net) | 563 | nfsd4_legacy_tracking_exit(struct net *net) |
560 | { | 564 | { |
561 | struct nfsd_net *nn = net_generic(net, nfsd_net_id); | 565 | struct nfsd_net *nn = net_generic(net, nfsd_net_id); |
562 | 566 | ||
563 | nfs4_release_reclaim(nn); | 567 | nfs4_release_reclaim(nn); |
564 | nfsd4_shutdown_recdir(nn); | 568 | nfsd4_shutdown_recdir(net); |
565 | nfs4_legacy_state_shutdown(net); | 569 | nfs4_legacy_state_shutdown(net); |
566 | } | 570 | } |
567 | 571 | ||