struct dlm_ls *ls = lkb->lkb_resource->res_ls;
int rv;
- if (lkb->lkb_flags & DLM_IFL_USER) {
+ if (lkb->lkb_dflags & DLM_DFL_USER) {
dlm_user_add_ast(lkb, flags, mode, status, sbflags);
return;
}
u64 xid = 0;
u64 us;
- if (lkb->lkb_flags & DLM_IFL_USER) {
+ if (lkb->lkb_dflags & DLM_DFL_USER) {
if (lkb->lkb_ua)
xid = lkb->lkb_ua->xid;
}
{
u64 xid = 0;
- if (lkb->lkb_flags & DLM_IFL_USER) {
+ if (lkb->lkb_dflags & DLM_DFL_USER) {
if (lkb->lkb_ua)
xid = lkb->lkb_ua->xid;
}
#define DLM_IFL_CB_PENDING_BIT 0
-/* least significant 2 bytes are message changed, they are full transmitted
- * but at receive side only the 2 bytes LSB will be set.
- *
- * Even wireshark dlm dissector does only evaluate the lower bytes and note
- * that they may not be used on transceiver side, we assume the higher bytes
- * are for internal use or reserved so long they are not parsed on receiver
- * side.
- */
-#define DLM_IFL_USER 0x00000001
-#define DLM_IFL_ORPHAN 0x00000002
+/* lkb_dflags */
+
+#define DLM_DFL_USER 0x00000001
+#define DLM_DFL_ORPHAN 0x00000002
#define DLM_CB_CAST 0x00000001
#define DLM_CB_BAST 0x00000002
uint32_t lkb_exflags; /* external flags from caller */
uint32_t lkb_sbflags; /* lksb flags */
uint32_t lkb_flags; /* internal flags */
+ uint32_t lkb_dflags; /* distributed flags */
unsigned long lkb_iflags; /* internal flags */
uint32_t lkb_lvbseq; /* lvb sequence number */
{
lkb->lkb_exflags = le32_to_cpu(ms->m_exflags);
lkb->lkb_sbflags = le32_to_cpu(ms->m_sbflags);
- lkb->lkb_flags = (lkb->lkb_flags & 0xFFFF0000) |
- (le32_to_cpu(ms->m_flags) & 0x0000FFFF);
+ lkb->lkb_dflags = le32_to_cpu(ms->m_flags);
}
static void receive_flags_reply(struct dlm_lkb *lkb, struct dlm_message *ms,
return;
lkb->lkb_sbflags = le32_to_cpu(ms->m_sbflags);
- lkb->lkb_flags = (lkb->lkb_flags & 0xFFFF0000) |
- (le32_to_cpu(ms->m_flags) & 0x0000FFFF);
+ lkb->lkb_dflags = le32_to_cpu(ms->m_flags);
}
static int receive_extralen(struct dlm_message *ms)
int error = 0;
/* currently mixing of user/kernel locks are not supported */
- if (ms->m_flags & cpu_to_le32(DLM_IFL_USER) &&
- ~lkb->lkb_flags & DLM_IFL_USER) {
+ if (ms->m_flags & cpu_to_le32(DLM_DFL_USER) &&
+ ~lkb->lkb_dflags & DLM_DFL_USER) {
log_error(lkb->lkb_resource->res_ls,
"got user dlm message for a kernel lock");
error = -EINVAL;
lkb->lkb_ownpid = le32_to_cpu(rl->rl_ownpid);
lkb->lkb_remid = le32_to_cpu(rl->rl_lkid);
lkb->lkb_exflags = le32_to_cpu(rl->rl_exflags);
- lkb->lkb_flags = le32_to_cpu(rl->rl_flags) & 0x0000FFFF;
+ lkb->lkb_dflags = le32_to_cpu(rl->rl_flags);
lkb->lkb_flags |= DLM_IFL_MSTCPY;
lkb->lkb_lvbseq = le32_to_cpu(rl->rl_lvbseq);
lkb->lkb_rqmode = rl->rl_rqmode;
}
/* After ua is attached to lkb it will be freed by dlm_free_lkb().
- When DLM_IFL_USER is set, the dlm knows that this is a userspace
+ When DLM_DFL_USER is set, the dlm knows that this is a userspace
lock and that lkb_astparam is the dlm_user_args structure. */
- lkb->lkb_flags |= DLM_IFL_USER;
+ lkb->lkb_dflags |= DLM_DFL_USER;
error = request_lock(ls, lkb, name, namelen, &args);
switch (error) {
lkb = iter;
list_del_init(&iter->lkb_ownqueue);
- iter->lkb_flags &= ~DLM_IFL_ORPHAN;
+ iter->lkb_dflags &= ~DLM_DFL_ORPHAN;
*lkid = iter->lkb_id;
break;
}
list_del_init(&lkb->lkb_ownqueue);
if (lkb->lkb_exflags & DLM_LKF_PERSISTENT)
- lkb->lkb_flags |= DLM_IFL_ORPHAN;
+ lkb->lkb_dflags |= DLM_DFL_ORPHAN;
else
lkb->lkb_flags |= DLM_IFL_DEAD;
out:
/* debug functionality */
int dlm_debug_add_lkb(struct dlm_ls *ls, uint32_t lkb_id, char *name, int len,
- int lkb_nodeid, unsigned int lkb_flags, int lkb_status)
+ int lkb_nodeid, unsigned int lkb_dflags, int lkb_status)
{
struct dlm_lksb *lksb;
struct dlm_lkb *lkb;
int error;
/* we currently can't set a valid user lock */
- if (lkb_flags & DLM_IFL_USER)
+ if (lkb_dflags & DLM_DFL_USER)
return -EOPNOTSUPP;
lksb = kzalloc(sizeof(*lksb), GFP_NOFS);
return error;
}
- lkb->lkb_flags = lkb_flags;
+ lkb->lkb_dflags = lkb_dflags;
lkb->lkb_nodeid = lkb_nodeid;
lkb->lkb_lksb = lksb;
/* user specific pointer, just don't have it NULL for kernel locks */
- if (~lkb_flags & DLM_IFL_USER)
+ if (~lkb_dflags & DLM_DFL_USER)
lkb->lkb_astparam = (void *)0xDEADBEEF;
error = find_rsb(ls, name, len, 0, R_REQUEST, &r);
void dlm_free_lkb(struct dlm_lkb *lkb)
{
- if (lkb->lkb_flags & DLM_IFL_USER) {
+ if (lkb->lkb_dflags & DLM_DFL_USER) {
struct dlm_user_args *ua;
ua = lkb->lkb_ua;
if (ua) {
rl->rl_ownpid = cpu_to_le32(lkb->lkb_ownpid);
rl->rl_lkid = cpu_to_le32(lkb->lkb_id);
rl->rl_exflags = cpu_to_le32(lkb->lkb_exflags);
- rl->rl_flags = cpu_to_le32(lkb->lkb_flags);
+ rl->rl_flags = cpu_to_le32(lkb->lkb_dflags);
rl->rl_lvbseq = cpu_to_le32(lkb->lkb_lvbseq);
rl->rl_rqmode = lkb->lkb_rqmode;
rl->rl_grmode = lkb->lkb_grmode;
struct dlm_user_proc *proc;
int rv;
- if (lkb->lkb_flags & (DLM_IFL_ORPHAN | DLM_IFL_DEAD))
+ if (lkb->lkb_dflags & DLM_DFL_ORPHAN ||
+ lkb->lkb_flags & DLM_IFL_DEAD)
return;
ls = lkb->lkb_resource->res_ls;
for cases where a completion ast is received for an operation that
began before clear_proc_locks did its cancel/unlock. */
- if (lkb->lkb_flags & (DLM_IFL_ORPHAN | DLM_IFL_DEAD))
+ if (lkb->lkb_dflags & DLM_DFL_ORPHAN ||
+ lkb->lkb_flags & DLM_IFL_DEAD)
goto out;
DLM_ASSERT(lkb->lkb_ua, dlm_print_lkb(lkb););
{ DLM_SBF_ALTMODE, "ALTMODE" })
#define show_lkb_flags(flags) __print_flags(flags, "|", \
- { DLM_IFL_MSTCPY, "MSTCPY" }, \
- { DLM_IFL_RESEND, "RESEND" }, \
- { DLM_IFL_DEAD, "DEAD" }, \
- { DLM_IFL_OVERLAP_UNLOCK, "OVERLAP_UNLOCK" }, \
- { DLM_IFL_OVERLAP_CANCEL, "OVERLAP_CANCEL" }, \
- { DLM_IFL_ENDOFLIFE, "ENDOFLIFE" }, \
- { DLM_IFL_DEADLOCK_CANCEL, "DEADLOCK_CANCEL" }, \
- { DLM_IFL_USER, "USER" }, \
- { DLM_IFL_ORPHAN, "ORPHAN" })
+ { DLM_DFL_USER, "USER" }, \
+ { DLM_DFL_ORPHAN, "ORPHAN" })
#define show_header_cmd(cmd) __print_symbolic(cmd, \
{ DLM_MSG, "MSG"}, \