|
@@ -3016,6 +3016,9 @@ static void nfs4_renew_done(struct rpc_task *task, void *data)
|
|
if (time_before(clp->cl_last_renewal,timestamp))
|
|
if (time_before(clp->cl_last_renewal,timestamp))
|
|
clp->cl_last_renewal = timestamp;
|
|
clp->cl_last_renewal = timestamp;
|
|
spin_unlock(&clp->cl_lock);
|
|
spin_unlock(&clp->cl_lock);
|
|
|
|
+ dprintk("%s calling put_rpccred on rpc_cred %p\n", __func__,
|
|
|
|
+ task->tk_msg.rpc_cred);
|
|
|
|
+ put_rpccred(task->tk_msg.rpc_cred);
|
|
}
|
|
}
|
|
|
|
|
|
static const struct rpc_call_ops nfs4_renew_ops = {
|
|
static const struct rpc_call_ops nfs4_renew_ops = {
|
|
@@ -4790,6 +4793,27 @@ struct nfs4_state_recovery_ops nfs4_nograce_recovery_ops = {
|
|
.recover_lock = nfs4_lock_expired,
|
|
.recover_lock = nfs4_lock_expired,
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+struct nfs4_state_maintenance_ops nfs40_state_renewal_ops = {
|
|
|
|
+ .sched_state_renewal = nfs4_proc_async_renew,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+#if defined(CONFIG_NFS_V4_1)
|
|
|
|
+struct nfs4_state_maintenance_ops nfs41_state_renewal_ops = {
|
|
|
|
+ .sched_state_renewal = nfs41_proc_async_sequence,
|
|
|
|
+};
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * Per minor version reboot and network partition recovery ops
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+struct nfs4_state_maintenance_ops *nfs4_state_renewal_ops[] = {
|
|
|
|
+ &nfs40_state_renewal_ops,
|
|
|
|
+#if defined(CONFIG_NFS_V4_1)
|
|
|
|
+ &nfs41_state_renewal_ops,
|
|
|
|
+#endif
|
|
|
|
+};
|
|
|
|
+
|
|
static const struct inode_operations nfs4_file_inode_operations = {
|
|
static const struct inode_operations nfs4_file_inode_operations = {
|
|
.permission = nfs_permission,
|
|
.permission = nfs_permission,
|
|
.getattr = nfs_getattr,
|
|
.getattr = nfs_getattr,
|