|
@@ -4122,8 +4122,28 @@ nfsd4_end_grace(struct nfsd_net *nn)
|
|
|
|
|
|
dprintk("NFSD: end of grace period\n");
|
|
dprintk("NFSD: end of grace period\n");
|
|
nn->grace_ended = true;
|
|
nn->grace_ended = true;
|
|
|
|
+ /*
|
|
|
|
+ * If the server goes down again right now, an NFSv4
|
|
|
|
+ * client will still be allowed to reclaim after it comes back up,
|
|
|
|
+ * even if it hasn't yet had a chance to reclaim state this time.
|
|
|
|
+ *
|
|
|
|
+ */
|
|
nfsd4_record_grace_done(nn);
|
|
nfsd4_record_grace_done(nn);
|
|
|
|
+ /*
|
|
|
|
+ * At this point, NFSv4 clients can still reclaim. But if the
|
|
|
|
+ * server crashes, any that have not yet reclaimed will be out
|
|
|
|
+ * of luck on the next boot.
|
|
|
|
+ *
|
|
|
|
+ * (NFSv4.1+ clients are considered to have reclaimed once they
|
|
|
|
+ * call RECLAIM_COMPLETE. NFSv4.0 clients are considered to
|
|
|
|
+ * have reclaimed after their first OPEN.)
|
|
|
|
+ */
|
|
locks_end_grace(&nn->nfsd4_manager);
|
|
locks_end_grace(&nn->nfsd4_manager);
|
|
|
|
+ /*
|
|
|
|
+ * At this point, and once lockd and/or any other containers
|
|
|
|
+ * exit their grace period, further reclaims will fail and
|
|
|
|
+ * regular locking can resume.
|
|
|
|
+ */
|
|
}
|
|
}
|
|
|
|
|
|
static time_t
|
|
static time_t
|