@@ -110,6 +110,15 @@ nfs_lift_grace_locked(time_t current)
}
}
+/*
+ * Report our new state to the cluster
+ */
+static void nfs4_set_enforcing(void)
+{
+ if (recovery_backend->set_enforcing)
+ recovery_backend->set_enforcing();
+}
+
/**
* @brief Start grace period
*
@@ -155,6 +164,11 @@ void nfs_start_grace(nfs_grace_start_t *gsp)
LogEvent(COMPONENT_STATE, "NFS Server Now IN GRACE, duration %d",
(int)nfs_param.nfsv4_param.grace_period);
+
+ /* Set enforcing flag here */
+ if (!was_grace)
+ nfs4_set_enforcing();
+
/*
* If we're just starting the grace period, then load the
* clid database. Don't load it however if we're extending the
@@ -1017,15 +1017,16 @@ typedef rdel_fh_t * (*add_rfh_entry_hook)(clid_entry_t *, char *);
struct nfs4_recovery_backend {
void (*recovery_init)(void);
void (*recovery_shutdown)(void);
- void (*end_grace)(void);
void (*recovery_read_clids)(nfs_grace_start_t *gsp,
add_clid_entry_hook add_clid,
add_rfh_entry_hook add_rfh);
void (*add_clid)(nfs_client_id_t *);
void (*rm_clid)(nfs_client_id_t *);
void (*add_revoke_fh)(nfs_client_id_t *, nfs_fh4 *);
+ void (*end_grace)(void);
void (*maybe_start_grace)(void);
bool (*try_lift_grace)(void);
+ void (*set_enforcing)(void);
};
void fs_backend_init(struct nfs4_recovery_backend **);