resp->status = nlmsvc_lock(rqstp, file, host, &argp->lock,
argp->block, &argp->cookie,
argp->reclaim);
- if (resp->status == nlm__int__drop_reply)
+ switch (resp->status) {
+ case nlm__int__drop_reply:
rc = rpc_drop_reply;
- else
+ break;
+ case nlm__int__deadlock:
+ resp->status = nlm4_deadlock;
+ fallthrough;
+ default:
dprintk("lockd: LOCK status %d\n", ntohl(resp->status));
+ }
nlmsvc_release_lockowner(&argp->lock);
nlmsvc_release_host(host);
#define NLMDBG_FACILITY NLMDBG_SVCLOCK
-#ifdef CONFIG_LOCKD_V4
-#define nlm_deadlock nlm4_deadlock
-#else
-#define nlm_deadlock nlm_lck_denied
-#endif
-
static void nlmsvc_release_block(struct nlm_block *block);
static void nlmsvc_insert_block(struct nlm_block *block, unsigned long);
static void nlmsvc_remove_block(struct nlm_block *block);
goto out;
case -EDEADLK:
nlmsvc_remove_block(block);
- ret = nlm_deadlock;
+ ret = nlm__int__deadlock;
goto out;
default: /* includes ENOLCK */
nlmsvc_remove_block(block);
case nlm_lck_denied_grace_period:
case nlm__int__drop_reply:
break;
- case nlm4_deadlock:
+ case nlm__int__deadlock:
status = nlm_lck_denied;
break;
default:
#else
static inline __be32 cast_status(__be32 status)
{
+ if (status == nlm__int__deadlock)
+ status = nlm_lck_denied;
return status;
}
#endif
* Version handlers translate these to appropriate wire values.
*/
#define nlm__int__drop_reply cpu_to_be32(30000)
+#define nlm__int__deadlock cpu_to_be32(30001)
/*
* Lockd host handle (used both by the client and server personality).