lkb                20 fs/dlm/ast.c   static void dlm_dump_lkb_callbacks(struct dlm_lkb *lkb)
lkb                25 fs/dlm/ast.c   		  lkb->lkb_id,
lkb                26 fs/dlm/ast.c   		  (unsigned long long)lkb->lkb_last_bast.seq,
lkb                27 fs/dlm/ast.c   		  lkb->lkb_last_bast.flags,
lkb                28 fs/dlm/ast.c   		  lkb->lkb_last_bast.mode,
lkb                29 fs/dlm/ast.c   		  lkb->lkb_last_bast.sb_status,
lkb                30 fs/dlm/ast.c   		  lkb->lkb_last_bast.sb_flags);
lkb                33 fs/dlm/ast.c   		  lkb->lkb_id,
lkb                34 fs/dlm/ast.c   		  (unsigned long long)lkb->lkb_last_cast.seq,
lkb                35 fs/dlm/ast.c   		  lkb->lkb_last_cast.flags,
lkb                36 fs/dlm/ast.c   		  lkb->lkb_last_cast.mode,
lkb                37 fs/dlm/ast.c   		  lkb->lkb_last_cast.sb_status,
lkb                38 fs/dlm/ast.c   		  lkb->lkb_last_cast.sb_flags);
lkb                42 fs/dlm/ast.c   			  lkb->lkb_id,
lkb                43 fs/dlm/ast.c   			  (unsigned long long)lkb->lkb_callbacks[i].seq,
lkb                44 fs/dlm/ast.c   			  lkb->lkb_callbacks[i].flags,
lkb                45 fs/dlm/ast.c   			  lkb->lkb_callbacks[i].mode,
lkb                46 fs/dlm/ast.c   			  lkb->lkb_callbacks[i].sb_status,
lkb                47 fs/dlm/ast.c   			  lkb->lkb_callbacks[i].sb_flags);
lkb                51 fs/dlm/ast.c   int dlm_add_lkb_callback(struct dlm_lkb *lkb, uint32_t flags, int mode,
lkb                54 fs/dlm/ast.c   	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb                60 fs/dlm/ast.c   		if (lkb->lkb_callbacks[i].seq)
lkb                71 fs/dlm/ast.c   		    (lkb->lkb_callbacks[i-1].flags & DLM_CB_BAST)) {
lkb                73 fs/dlm/ast.c   			prev_seq = lkb->lkb_callbacks[i-1].seq;
lkb                74 fs/dlm/ast.c   			prev_mode = lkb->lkb_callbacks[i-1].mode;
lkb                81 fs/dlm/ast.c   					  lkb->lkb_id,
lkb                91 fs/dlm/ast.c   		lkb->lkb_callbacks[i].seq = seq;
lkb                92 fs/dlm/ast.c   		lkb->lkb_callbacks[i].flags = flags;
lkb                93 fs/dlm/ast.c   		lkb->lkb_callbacks[i].mode = mode;
lkb                94 fs/dlm/ast.c   		lkb->lkb_callbacks[i].sb_status = status;
lkb                95 fs/dlm/ast.c   		lkb->lkb_callbacks[i].sb_flags = (sbflags & 0x000000FF);
lkb               102 fs/dlm/ast.c   			  lkb->lkb_id, (unsigned long long)seq,
lkb               104 fs/dlm/ast.c   		dlm_dump_lkb_callbacks(lkb);
lkb               112 fs/dlm/ast.c   int dlm_rem_lkb_callback(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb               119 fs/dlm/ast.c   	if (!lkb->lkb_callbacks[0].seq) {
lkb               126 fs/dlm/ast.c   	memcpy(cb, &lkb->lkb_callbacks[0], sizeof(struct dlm_callback));
lkb               127 fs/dlm/ast.c   	memset(&lkb->lkb_callbacks[0], 0, sizeof(struct dlm_callback));
lkb               132 fs/dlm/ast.c   		if (!lkb->lkb_callbacks[i].seq)
lkb               134 fs/dlm/ast.c   		memcpy(&lkb->lkb_callbacks[i-1], &lkb->lkb_callbacks[i],
lkb               136 fs/dlm/ast.c   		memset(&lkb->lkb_callbacks[i], 0, sizeof(struct dlm_callback));
lkb               143 fs/dlm/ast.c   	if ((cb->flags & DLM_CB_BAST) && lkb->lkb_last_cast.seq) {
lkb               144 fs/dlm/ast.c   		if (dlm_modes_compat(cb->mode, lkb->lkb_last_cast.mode)) {
lkb               149 fs/dlm/ast.c   				  lkb->lkb_id,
lkb               152 fs/dlm/ast.c   				  (unsigned long long)lkb->lkb_last_cast.seq,
lkb               153 fs/dlm/ast.c   				  lkb->lkb_last_cast.mode);
lkb               160 fs/dlm/ast.c   		memcpy(&lkb->lkb_last_cast, cb, sizeof(struct dlm_callback));
lkb               161 fs/dlm/ast.c   		lkb->lkb_last_cast_time = ktime_get();
lkb               165 fs/dlm/ast.c   		memcpy(&lkb->lkb_last_bast, cb, sizeof(struct dlm_callback));
lkb               166 fs/dlm/ast.c   		lkb->lkb_last_bast_time = ktime_get();
lkb               173 fs/dlm/ast.c   void dlm_add_cb(struct dlm_lkb *lkb, uint32_t flags, int mode, int status,
lkb               176 fs/dlm/ast.c   	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb               186 fs/dlm/ast.c   	if (lkb->lkb_flags & DLM_IFL_USER) {
lkb               187 fs/dlm/ast.c   		dlm_user_add_ast(lkb, flags, mode, status, sbflags, new_seq);
lkb               191 fs/dlm/ast.c   	mutex_lock(&lkb->lkb_cb_mutex);
lkb               192 fs/dlm/ast.c   	prev_seq = lkb->lkb_callbacks[0].seq;
lkb               194 fs/dlm/ast.c   	rv = dlm_add_lkb_callback(lkb, flags, mode, status, sbflags, new_seq);
lkb               199 fs/dlm/ast.c   		kref_get(&lkb->lkb_ref);
lkb               203 fs/dlm/ast.c   			list_add(&lkb->lkb_cb_list, &ls->ls_cb_delay);
lkb               206 fs/dlm/ast.c   			queue_work(ls->ls_callback_wq, &lkb->lkb_cb_work);
lkb               210 fs/dlm/ast.c   	mutex_unlock(&lkb->lkb_cb_mutex);
lkb               215 fs/dlm/ast.c   	struct dlm_lkb *lkb = container_of(work, struct dlm_lkb, lkb_cb_work);
lkb               216 fs/dlm/ast.c   	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb               224 fs/dlm/ast.c   	mutex_lock(&lkb->lkb_cb_mutex);
lkb               225 fs/dlm/ast.c   	if (!lkb->lkb_callbacks[0].seq) {
lkb               227 fs/dlm/ast.c   		log_error(ls, "dlm_callback_work %x no work", lkb->lkb_id);
lkb               228 fs/dlm/ast.c   		dlm_print_lkb(lkb);
lkb               229 fs/dlm/ast.c   		dlm_dump_lkb_callbacks(lkb);
lkb               233 fs/dlm/ast.c   		rv = dlm_rem_lkb_callback(ls, lkb, &callbacks[i], &resid);
lkb               240 fs/dlm/ast.c   		log_error(ls, "dlm_callback_work %x resid %d", lkb->lkb_id,
lkb               242 fs/dlm/ast.c   		dlm_print_lkb(lkb);
lkb               243 fs/dlm/ast.c   		dlm_dump_lkb_callbacks(lkb);
lkb               245 fs/dlm/ast.c   	mutex_unlock(&lkb->lkb_cb_mutex);
lkb               247 fs/dlm/ast.c   	castfn = lkb->lkb_astfn;
lkb               248 fs/dlm/ast.c   	bastfn = lkb->lkb_bastfn;
lkb               256 fs/dlm/ast.c   			bastfn(lkb->lkb_astparam, callbacks[i].mode);
lkb               258 fs/dlm/ast.c   			lkb->lkb_lksb->sb_status = callbacks[i].sb_status;
lkb               259 fs/dlm/ast.c   			lkb->lkb_lksb->sb_flags = callbacks[i].sb_flags;
lkb               260 fs/dlm/ast.c   			castfn(lkb->lkb_astparam);
lkb               265 fs/dlm/ast.c   	dlm_put_lkb(lkb);
lkb               297 fs/dlm/ast.c   	struct dlm_lkb *lkb, *safe;
lkb               307 fs/dlm/ast.c   	list_for_each_entry_safe(lkb, safe, &ls->ls_cb_delay, lkb_cb_list) {
lkb               308 fs/dlm/ast.c   		list_del_init(&lkb->lkb_cb_list);
lkb               309 fs/dlm/ast.c   		queue_work(ls->ls_callback_wq, &lkb->lkb_cb_work);
lkb                14 fs/dlm/ast.h   void dlm_del_ast(struct dlm_lkb *lkb);
lkb                15 fs/dlm/ast.h   int dlm_add_lkb_callback(struct dlm_lkb *lkb, uint32_t flags, int mode,
lkb                17 fs/dlm/ast.h   int dlm_rem_lkb_callback(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb                19 fs/dlm/ast.h   void dlm_add_cb(struct dlm_lkb *lkb, uint32_t flags, int mode, int status,
lkb                49 fs/dlm/debug_fs.c static void print_format1_lock(struct seq_file *s, struct dlm_lkb *lkb,
lkb                52 fs/dlm/debug_fs.c 	seq_printf(s, "%08x %s", lkb->lkb_id, print_lockmode(lkb->lkb_grmode));
lkb                54 fs/dlm/debug_fs.c 	if (lkb->lkb_status == DLM_LKSTS_CONVERT ||
lkb                55 fs/dlm/debug_fs.c 	    lkb->lkb_status == DLM_LKSTS_WAITING)
lkb                56 fs/dlm/debug_fs.c 		seq_printf(s, " (%s)", print_lockmode(lkb->lkb_rqmode));
lkb                58 fs/dlm/debug_fs.c 	if (lkb->lkb_nodeid) {
lkb                59 fs/dlm/debug_fs.c 		if (lkb->lkb_nodeid != res->res_nodeid)
lkb                60 fs/dlm/debug_fs.c 			seq_printf(s, " Remote: %3d %08x", lkb->lkb_nodeid,
lkb                61 fs/dlm/debug_fs.c 				   lkb->lkb_remid);
lkb                63 fs/dlm/debug_fs.c 			seq_printf(s, " Master:     %08x", lkb->lkb_remid);
lkb                66 fs/dlm/debug_fs.c 	if (lkb->lkb_wait_type)
lkb                67 fs/dlm/debug_fs.c 		seq_printf(s, " wait_type: %d", lkb->lkb_wait_type);
lkb                74 fs/dlm/debug_fs.c 	struct dlm_lkb *lkb;
lkb               128 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &res->res_grantqueue, lkb_statequeue) {
lkb               129 fs/dlm/debug_fs.c 		print_format1_lock(s, lkb, res);
lkb               135 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &res->res_convertqueue, lkb_statequeue) {
lkb               136 fs/dlm/debug_fs.c 		print_format1_lock(s, lkb, res);
lkb               142 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &res->res_waitqueue, lkb_statequeue) {
lkb               143 fs/dlm/debug_fs.c 		print_format1_lock(s, lkb, res);
lkb               152 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &res->res_lookup, lkb_rsb_lookup) {
lkb               154 fs/dlm/debug_fs.c 			   lkb->lkb_id, print_lockmode(lkb->lkb_rqmode));
lkb               155 fs/dlm/debug_fs.c 		if (lkb->lkb_wait_type)
lkb               156 fs/dlm/debug_fs.c 			seq_printf(s, " wait_type: %d", lkb->lkb_wait_type);
lkb               165 fs/dlm/debug_fs.c static void print_format2_lock(struct seq_file *s, struct dlm_lkb *lkb,
lkb               171 fs/dlm/debug_fs.c 	if (lkb->lkb_flags & DLM_IFL_USER) {
lkb               172 fs/dlm/debug_fs.c 		if (lkb->lkb_ua)
lkb               173 fs/dlm/debug_fs.c 			xid = lkb->lkb_ua->xid;
lkb               177 fs/dlm/debug_fs.c 	us = ktime_to_us(ktime_sub(ktime_get(), lkb->lkb_timestamp));
lkb               183 fs/dlm/debug_fs.c 		   lkb->lkb_id,
lkb               184 fs/dlm/debug_fs.c 		   lkb->lkb_nodeid,
lkb               185 fs/dlm/debug_fs.c 		   lkb->lkb_remid,
lkb               186 fs/dlm/debug_fs.c 		   lkb->lkb_ownpid,
lkb               188 fs/dlm/debug_fs.c 		   lkb->lkb_exflags,
lkb               189 fs/dlm/debug_fs.c 		   lkb->lkb_flags,
lkb               190 fs/dlm/debug_fs.c 		   lkb->lkb_status,
lkb               191 fs/dlm/debug_fs.c 		   lkb->lkb_grmode,
lkb               192 fs/dlm/debug_fs.c 		   lkb->lkb_rqmode,
lkb               201 fs/dlm/debug_fs.c 	struct dlm_lkb *lkb;
lkb               205 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &r->res_grantqueue, lkb_statequeue) {
lkb               206 fs/dlm/debug_fs.c 		print_format2_lock(s, lkb, r);
lkb               211 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &r->res_convertqueue, lkb_statequeue) {
lkb               212 fs/dlm/debug_fs.c 		print_format2_lock(s, lkb, r);
lkb               217 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &r->res_waitqueue, lkb_statequeue) {
lkb               218 fs/dlm/debug_fs.c 		print_format2_lock(s, lkb, r);
lkb               226 fs/dlm/debug_fs.c static void print_format3_lock(struct seq_file *s, struct dlm_lkb *lkb,
lkb               231 fs/dlm/debug_fs.c 	if (lkb->lkb_flags & DLM_IFL_USER) {
lkb               232 fs/dlm/debug_fs.c 		if (lkb->lkb_ua)
lkb               233 fs/dlm/debug_fs.c 			xid = lkb->lkb_ua->xid;
lkb               237 fs/dlm/debug_fs.c 		   lkb->lkb_id,
lkb               238 fs/dlm/debug_fs.c 		   lkb->lkb_nodeid,
lkb               239 fs/dlm/debug_fs.c 		   lkb->lkb_remid,
lkb               240 fs/dlm/debug_fs.c 		   lkb->lkb_ownpid,
lkb               242 fs/dlm/debug_fs.c 		   lkb->lkb_exflags,
lkb               243 fs/dlm/debug_fs.c 		   lkb->lkb_flags,
lkb               244 fs/dlm/debug_fs.c 		   lkb->lkb_status,
lkb               245 fs/dlm/debug_fs.c 		   lkb->lkb_grmode,
lkb               246 fs/dlm/debug_fs.c 		   lkb->lkb_rqmode,
lkb               247 fs/dlm/debug_fs.c 		   lkb->lkb_last_bast.mode,
lkb               249 fs/dlm/debug_fs.c 		   lkb->lkb_wait_type,
lkb               250 fs/dlm/debug_fs.c 		   lkb->lkb_lvbseq,
lkb               251 fs/dlm/debug_fs.c 		   (unsigned long long)ktime_to_ns(lkb->lkb_timestamp),
lkb               252 fs/dlm/debug_fs.c 		   (unsigned long long)ktime_to_ns(lkb->lkb_last_bast_time));
lkb               257 fs/dlm/debug_fs.c 	struct dlm_lkb *lkb;
lkb               304 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &r->res_grantqueue, lkb_statequeue) {
lkb               305 fs/dlm/debug_fs.c 		print_format3_lock(s, lkb, 0);
lkb               310 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &r->res_convertqueue, lkb_statequeue) {
lkb               311 fs/dlm/debug_fs.c 		print_format3_lock(s, lkb, 0);
lkb               316 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &r->res_waitqueue, lkb_statequeue) {
lkb               317 fs/dlm/debug_fs.c 		print_format3_lock(s, lkb, 0);
lkb               322 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &r->res_lookup, lkb_rsb_lookup) {
lkb               323 fs/dlm/debug_fs.c 		print_format3_lock(s, lkb, 1);
lkb               702 fs/dlm/debug_fs.c 	struct dlm_lkb *lkb;
lkb               709 fs/dlm/debug_fs.c 	list_for_each_entry(lkb, &ls->ls_waiters, lkb_wait_reply) {
lkb               711 fs/dlm/debug_fs.c 			       lkb->lkb_id, lkb->lkb_wait_type,
lkb               712 fs/dlm/debug_fs.c 			       lkb->lkb_nodeid, lkb->lkb_resource->res_name);
lkb               717 fs/dlm/dlm_internal.h void dlm_timeout_warn(struct dlm_lkb *lkb);
lkb                76 fs/dlm/lock.c  static int send_request(struct dlm_rsb *r, struct dlm_lkb *lkb);
lkb                77 fs/dlm/lock.c  static int send_convert(struct dlm_rsb *r, struct dlm_lkb *lkb);
lkb                78 fs/dlm/lock.c  static int send_unlock(struct dlm_rsb *r, struct dlm_lkb *lkb);
lkb                79 fs/dlm/lock.c  static int send_cancel(struct dlm_rsb *r, struct dlm_lkb *lkb);
lkb                80 fs/dlm/lock.c  static int send_grant(struct dlm_rsb *r, struct dlm_lkb *lkb);
lkb                81 fs/dlm/lock.c  static int send_bast(struct dlm_rsb *r, struct dlm_lkb *lkb, int mode);
lkb                82 fs/dlm/lock.c  static int send_lookup(struct dlm_rsb *r, struct dlm_lkb *lkb);
lkb                84 fs/dlm/lock.c  static int _request_lock(struct dlm_rsb *r, struct dlm_lkb *lkb);
lkb                85 fs/dlm/lock.c  static int _cancel_lock(struct dlm_rsb *r, struct dlm_lkb *lkb);
lkb                86 fs/dlm/lock.c  static void __receive_convert_reply(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb                90 fs/dlm/lock.c  static void del_timeout(struct dlm_lkb *lkb);
lkb               160 fs/dlm/lock.c  void dlm_print_lkb(struct dlm_lkb *lkb)
lkb               164 fs/dlm/lock.c  	       lkb->lkb_nodeid, lkb->lkb_id, lkb->lkb_remid, lkb->lkb_exflags,
lkb               165 fs/dlm/lock.c  	       lkb->lkb_flags, lkb->lkb_status, lkb->lkb_rqmode,
lkb               166 fs/dlm/lock.c  	       lkb->lkb_grmode, lkb->lkb_wait_type, lkb->lkb_wait_nodeid,
lkb               167 fs/dlm/lock.c  	       (unsigned long long)lkb->lkb_recover_seq);
lkb               181 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb               188 fs/dlm/lock.c  	list_for_each_entry(lkb, &r->res_lookup, lkb_rsb_lookup)
lkb               189 fs/dlm/lock.c  		dlm_print_lkb(lkb);
lkb               191 fs/dlm/lock.c  	list_for_each_entry(lkb, &r->res_grantqueue, lkb_statequeue)
lkb               192 fs/dlm/lock.c  		dlm_print_lkb(lkb);
lkb               194 fs/dlm/lock.c  	list_for_each_entry(lkb, &r->res_convertqueue, lkb_statequeue)
lkb               195 fs/dlm/lock.c  		dlm_print_lkb(lkb);
lkb               197 fs/dlm/lock.c  	list_for_each_entry(lkb, &r->res_waitqueue, lkb_statequeue)
lkb               198 fs/dlm/lock.c  		dlm_print_lkb(lkb);
lkb               218 fs/dlm/lock.c  static inline int can_be_queued(struct dlm_lkb *lkb)
lkb               220 fs/dlm/lock.c  	return !(lkb->lkb_exflags & DLM_LKF_NOQUEUE);
lkb               223 fs/dlm/lock.c  static inline int force_blocking_asts(struct dlm_lkb *lkb)
lkb               225 fs/dlm/lock.c  	return (lkb->lkb_exflags & DLM_LKF_NOQUEUEBAST);
lkb               228 fs/dlm/lock.c  static inline int is_demoted(struct dlm_lkb *lkb)
lkb               230 fs/dlm/lock.c  	return (lkb->lkb_sbflags & DLM_SBF_DEMOTED);
lkb               233 fs/dlm/lock.c  static inline int is_altmode(struct dlm_lkb *lkb)
lkb               235 fs/dlm/lock.c  	return (lkb->lkb_sbflags & DLM_SBF_ALTMODE);
lkb               238 fs/dlm/lock.c  static inline int is_granted(struct dlm_lkb *lkb)
lkb               240 fs/dlm/lock.c  	return (lkb->lkb_status == DLM_LKSTS_GRANTED);
lkb               249 fs/dlm/lock.c  static inline int is_process_copy(struct dlm_lkb *lkb)
lkb               251 fs/dlm/lock.c  	return (lkb->lkb_nodeid && !(lkb->lkb_flags & DLM_IFL_MSTCPY));
lkb               254 fs/dlm/lock.c  static inline int is_master_copy(struct dlm_lkb *lkb)
lkb               256 fs/dlm/lock.c  	return (lkb->lkb_flags & DLM_IFL_MSTCPY) ? 1 : 0;
lkb               259 fs/dlm/lock.c  static inline int middle_conversion(struct dlm_lkb *lkb)
lkb               261 fs/dlm/lock.c  	if ((lkb->lkb_grmode==DLM_LOCK_PR && lkb->lkb_rqmode==DLM_LOCK_CW) ||
lkb               262 fs/dlm/lock.c  	    (lkb->lkb_rqmode==DLM_LOCK_PR && lkb->lkb_grmode==DLM_LOCK_CW))
lkb               267 fs/dlm/lock.c  static inline int down_conversion(struct dlm_lkb *lkb)
lkb               269 fs/dlm/lock.c  	return (!middle_conversion(lkb) && lkb->lkb_rqmode < lkb->lkb_grmode);
lkb               272 fs/dlm/lock.c  static inline int is_overlap_unlock(struct dlm_lkb *lkb)
lkb               274 fs/dlm/lock.c  	return lkb->lkb_flags & DLM_IFL_OVERLAP_UNLOCK;
lkb               277 fs/dlm/lock.c  static inline int is_overlap_cancel(struct dlm_lkb *lkb)
lkb               279 fs/dlm/lock.c  	return lkb->lkb_flags & DLM_IFL_OVERLAP_CANCEL;
lkb               282 fs/dlm/lock.c  static inline int is_overlap(struct dlm_lkb *lkb)
lkb               284 fs/dlm/lock.c  	return (lkb->lkb_flags & (DLM_IFL_OVERLAP_UNLOCK |
lkb               288 fs/dlm/lock.c  static void queue_cast(struct dlm_rsb *r, struct dlm_lkb *lkb, int rv)
lkb               290 fs/dlm/lock.c  	if (is_master_copy(lkb))
lkb               293 fs/dlm/lock.c  	del_timeout(lkb);
lkb               295 fs/dlm/lock.c  	DLM_ASSERT(lkb->lkb_lksb, dlm_print_lkb(lkb););
lkb               299 fs/dlm/lock.c  	if (rv == -DLM_ECANCEL && (lkb->lkb_flags & DLM_IFL_TIMEOUT_CANCEL)) {
lkb               300 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_TIMEOUT_CANCEL;
lkb               304 fs/dlm/lock.c  	if (rv == -DLM_ECANCEL && (lkb->lkb_flags & DLM_IFL_DEADLOCK_CANCEL)) {
lkb               305 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_DEADLOCK_CANCEL;
lkb               309 fs/dlm/lock.c  	dlm_add_cb(lkb, DLM_CB_CAST, lkb->lkb_grmode, rv, lkb->lkb_sbflags);
lkb               312 fs/dlm/lock.c  static inline void queue_cast_overlap(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb               314 fs/dlm/lock.c  	queue_cast(r, lkb,
lkb               315 fs/dlm/lock.c  		   is_overlap_unlock(lkb) ? -DLM_EUNLOCK : -DLM_ECANCEL);
lkb               318 fs/dlm/lock.c  static void queue_bast(struct dlm_rsb *r, struct dlm_lkb *lkb, int rqmode)
lkb               320 fs/dlm/lock.c  	if (is_master_copy(lkb)) {
lkb               321 fs/dlm/lock.c  		send_bast(r, lkb, rqmode);
lkb               323 fs/dlm/lock.c  		dlm_add_cb(lkb, DLM_CB_BAST, rqmode, 0, 0);
lkb              1167 fs/dlm/lock.c  static void attach_lkb(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              1170 fs/dlm/lock.c  	lkb->lkb_resource = r;
lkb              1173 fs/dlm/lock.c  static void detach_lkb(struct dlm_lkb *lkb)
lkb              1175 fs/dlm/lock.c  	if (lkb->lkb_resource) {
lkb              1176 fs/dlm/lock.c  		put_rsb(lkb->lkb_resource);
lkb              1177 fs/dlm/lock.c  		lkb->lkb_resource = NULL;
lkb              1183 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              1186 fs/dlm/lock.c  	lkb = dlm_allocate_lkb(ls);
lkb              1187 fs/dlm/lock.c  	if (!lkb)
lkb              1190 fs/dlm/lock.c  	lkb->lkb_nodeid = -1;
lkb              1191 fs/dlm/lock.c  	lkb->lkb_grmode = DLM_LOCK_IV;
lkb              1192 fs/dlm/lock.c  	kref_init(&lkb->lkb_ref);
lkb              1193 fs/dlm/lock.c  	INIT_LIST_HEAD(&lkb->lkb_ownqueue);
lkb              1194 fs/dlm/lock.c  	INIT_LIST_HEAD(&lkb->lkb_rsb_lookup);
lkb              1195 fs/dlm/lock.c  	INIT_LIST_HEAD(&lkb->lkb_time_list);
lkb              1196 fs/dlm/lock.c  	INIT_LIST_HEAD(&lkb->lkb_cb_list);
lkb              1197 fs/dlm/lock.c  	mutex_init(&lkb->lkb_cb_mutex);
lkb              1198 fs/dlm/lock.c  	INIT_WORK(&lkb->lkb_cb_work, dlm_callback_work);
lkb              1202 fs/dlm/lock.c  	rv = idr_alloc(&ls->ls_lkbidr, lkb, 1, 0, GFP_NOWAIT);
lkb              1204 fs/dlm/lock.c  		lkb->lkb_id = rv;
lkb              1210 fs/dlm/lock.c  		dlm_free_lkb(lkb);
lkb              1214 fs/dlm/lock.c  	*lkb_ret = lkb;
lkb              1220 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              1223 fs/dlm/lock.c  	lkb = idr_find(&ls->ls_lkbidr, lkid);
lkb              1224 fs/dlm/lock.c  	if (lkb)
lkb              1225 fs/dlm/lock.c  		kref_get(&lkb->lkb_ref);
lkb              1228 fs/dlm/lock.c  	*lkb_ret = lkb;
lkb              1229 fs/dlm/lock.c  	return lkb ? 0 : -ENOENT;
lkb              1234 fs/dlm/lock.c  	struct dlm_lkb *lkb = container_of(kref, struct dlm_lkb, lkb_ref);
lkb              1239 fs/dlm/lock.c  	DLM_ASSERT(!lkb->lkb_status, dlm_print_lkb(lkb););
lkb              1245 fs/dlm/lock.c  static int __put_lkb(struct dlm_ls *ls, struct dlm_lkb *lkb)
lkb              1247 fs/dlm/lock.c  	uint32_t lkid = lkb->lkb_id;
lkb              1250 fs/dlm/lock.c  	if (kref_put(&lkb->lkb_ref, kill_lkb)) {
lkb              1254 fs/dlm/lock.c  		detach_lkb(lkb);
lkb              1257 fs/dlm/lock.c  		if (lkb->lkb_lvbptr && is_master_copy(lkb))
lkb              1258 fs/dlm/lock.c  			dlm_free_lvb(lkb->lkb_lvbptr);
lkb              1259 fs/dlm/lock.c  		dlm_free_lkb(lkb);
lkb              1267 fs/dlm/lock.c  int dlm_put_lkb(struct dlm_lkb *lkb)
lkb              1271 fs/dlm/lock.c  	DLM_ASSERT(lkb->lkb_resource, dlm_print_lkb(lkb););
lkb              1272 fs/dlm/lock.c  	DLM_ASSERT(lkb->lkb_resource->res_ls, dlm_print_lkb(lkb););
lkb              1274 fs/dlm/lock.c  	ls = lkb->lkb_resource->res_ls;
lkb              1275 fs/dlm/lock.c  	return __put_lkb(ls, lkb);
lkb              1281 fs/dlm/lock.c  static inline void hold_lkb(struct dlm_lkb *lkb)
lkb              1283 fs/dlm/lock.c  	kref_get(&lkb->lkb_ref);
lkb              1291 fs/dlm/lock.c  static inline void unhold_lkb(struct dlm_lkb *lkb)
lkb              1294 fs/dlm/lock.c  	rv = kref_put(&lkb->lkb_ref, kill_lkb);
lkb              1295 fs/dlm/lock.c  	DLM_ASSERT(!rv, dlm_print_lkb(lkb););
lkb              1301 fs/dlm/lock.c  	struct dlm_lkb *lkb = NULL;
lkb              1303 fs/dlm/lock.c  	list_for_each_entry(lkb, head, lkb_statequeue)
lkb              1304 fs/dlm/lock.c  		if (lkb->lkb_rqmode < mode)
lkb              1307 fs/dlm/lock.c  	__list_add(new, lkb->lkb_statequeue.prev, &lkb->lkb_statequeue);
lkb              1312 fs/dlm/lock.c  static void add_lkb(struct dlm_rsb *r, struct dlm_lkb *lkb, int status)
lkb              1314 fs/dlm/lock.c  	kref_get(&lkb->lkb_ref);
lkb              1316 fs/dlm/lock.c  	DLM_ASSERT(!lkb->lkb_status, dlm_print_lkb(lkb););
lkb              1318 fs/dlm/lock.c  	lkb->lkb_timestamp = ktime_get();
lkb              1320 fs/dlm/lock.c  	lkb->lkb_status = status;
lkb              1324 fs/dlm/lock.c  		if (lkb->lkb_exflags & DLM_LKF_HEADQUE)
lkb              1325 fs/dlm/lock.c  			list_add(&lkb->lkb_statequeue, &r->res_waitqueue);
lkb              1327 fs/dlm/lock.c  			list_add_tail(&lkb->lkb_statequeue, &r->res_waitqueue);
lkb              1331 fs/dlm/lock.c  		lkb_add_ordered(&lkb->lkb_statequeue, &r->res_grantqueue,
lkb              1332 fs/dlm/lock.c  				lkb->lkb_grmode);
lkb              1335 fs/dlm/lock.c  		if (lkb->lkb_exflags & DLM_LKF_HEADQUE)
lkb              1336 fs/dlm/lock.c  			list_add(&lkb->lkb_statequeue, &r->res_convertqueue);
lkb              1338 fs/dlm/lock.c  			list_add_tail(&lkb->lkb_statequeue,
lkb              1342 fs/dlm/lock.c  		DLM_ASSERT(0, dlm_print_lkb(lkb); printk("sts=%d\n", status););
lkb              1346 fs/dlm/lock.c  static void del_lkb(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              1348 fs/dlm/lock.c  	lkb->lkb_status = 0;
lkb              1349 fs/dlm/lock.c  	list_del(&lkb->lkb_statequeue);
lkb              1350 fs/dlm/lock.c  	unhold_lkb(lkb);
lkb              1353 fs/dlm/lock.c  static void move_lkb(struct dlm_rsb *r, struct dlm_lkb *lkb, int sts)
lkb              1355 fs/dlm/lock.c  	hold_lkb(lkb);
lkb              1356 fs/dlm/lock.c  	del_lkb(r, lkb);
lkb              1357 fs/dlm/lock.c  	add_lkb(r, lkb, sts);
lkb              1358 fs/dlm/lock.c  	unhold_lkb(lkb);
lkb              1395 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              1408 fs/dlm/lock.c  	list_for_each_entry(lkb, &ls->ls_waiters, lkb_wait_reply) {
lkb              1409 fs/dlm/lock.c  		if (!lkb->lkb_wait_time)
lkb              1414 fs/dlm/lock.c  		us = ktime_to_us(ktime_sub(ktime_get(), lkb->lkb_wait_time));
lkb              1419 fs/dlm/lock.c  		lkb->lkb_wait_time = 0;
lkb              1431 fs/dlm/lock.c  		if (nodeid_warned(lkb->lkb_wait_nodeid, num_nodes, warned))
lkb              1435 fs/dlm/lock.c  			  "node %d", lkb->lkb_id, (long long)us,
lkb              1436 fs/dlm/lock.c  			  dlm_config.ci_waitwarn_us, lkb->lkb_wait_nodeid);
lkb              1450 fs/dlm/lock.c  static int add_to_waiters(struct dlm_lkb *lkb, int mstype, int to_nodeid)
lkb              1452 fs/dlm/lock.c  	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb              1457 fs/dlm/lock.c  	if (is_overlap_unlock(lkb) ||
lkb              1458 fs/dlm/lock.c  	    (is_overlap_cancel(lkb) && (mstype == DLM_MSG_CANCEL))) {
lkb              1463 fs/dlm/lock.c  	if (lkb->lkb_wait_type || is_overlap_cancel(lkb)) {
lkb              1466 fs/dlm/lock.c  			lkb->lkb_flags |= DLM_IFL_OVERLAP_UNLOCK;
lkb              1469 fs/dlm/lock.c  			lkb->lkb_flags |= DLM_IFL_OVERLAP_CANCEL;
lkb              1475 fs/dlm/lock.c  		lkb->lkb_wait_count++;
lkb              1476 fs/dlm/lock.c  		hold_lkb(lkb);
lkb              1479 fs/dlm/lock.c  			  lkb->lkb_id, lkb->lkb_wait_type, mstype,
lkb              1480 fs/dlm/lock.c  			  lkb->lkb_wait_count, lkb->lkb_flags);
lkb              1484 fs/dlm/lock.c  	DLM_ASSERT(!lkb->lkb_wait_count,
lkb              1485 fs/dlm/lock.c  		   dlm_print_lkb(lkb);
lkb              1486 fs/dlm/lock.c  		   printk("wait_count %d\n", lkb->lkb_wait_count););
lkb              1488 fs/dlm/lock.c  	lkb->lkb_wait_count++;
lkb              1489 fs/dlm/lock.c  	lkb->lkb_wait_type = mstype;
lkb              1490 fs/dlm/lock.c  	lkb->lkb_wait_time = ktime_get();
lkb              1491 fs/dlm/lock.c  	lkb->lkb_wait_nodeid = to_nodeid; /* for debugging */
lkb              1492 fs/dlm/lock.c  	hold_lkb(lkb);
lkb              1493 fs/dlm/lock.c  	list_add(&lkb->lkb_wait_reply, &ls->ls_waiters);
lkb              1497 fs/dlm/lock.c  			  lkb->lkb_id, error, lkb->lkb_flags, mstype,
lkb              1498 fs/dlm/lock.c  			  lkb->lkb_wait_type, lkb->lkb_resource->res_name);
lkb              1508 fs/dlm/lock.c  static int _remove_from_waiters(struct dlm_lkb *lkb, int mstype,
lkb              1511 fs/dlm/lock.c  	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb              1514 fs/dlm/lock.c  	if (is_overlap_unlock(lkb) && (mstype == DLM_MSG_UNLOCK_REPLY)) {
lkb              1515 fs/dlm/lock.c  		log_debug(ls, "remwait %x unlock_reply overlap", lkb->lkb_id);
lkb              1516 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_UNLOCK;
lkb              1521 fs/dlm/lock.c  	if (is_overlap_cancel(lkb) && (mstype == DLM_MSG_CANCEL_REPLY)) {
lkb              1522 fs/dlm/lock.c  		log_debug(ls, "remwait %x cancel_reply overlap", lkb->lkb_id);
lkb              1523 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_CANCEL;
lkb              1532 fs/dlm/lock.c  	    (lkb->lkb_wait_type != DLM_MSG_CANCEL)) {
lkb              1534 fs/dlm/lock.c  			  lkb->lkb_id, lkb->lkb_wait_type);
lkb              1547 fs/dlm/lock.c  	    (lkb->lkb_wait_type == DLM_MSG_CONVERT) &&
lkb              1548 fs/dlm/lock.c  	    is_overlap_cancel(lkb) && ms && !ms->m_result) {
lkb              1550 fs/dlm/lock.c  			  lkb->lkb_id);
lkb              1551 fs/dlm/lock.c  		lkb->lkb_wait_type = 0;
lkb              1552 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_CANCEL;
lkb              1553 fs/dlm/lock.c  		lkb->lkb_wait_count--;
lkb              1560 fs/dlm/lock.c  	if (lkb->lkb_wait_type) {
lkb              1561 fs/dlm/lock.c  		lkb->lkb_wait_type = 0;
lkb              1566 fs/dlm/lock.c  		  lkb->lkb_id, ms ? ms->m_header.h_nodeid : 0, lkb->lkb_remid,
lkb              1567 fs/dlm/lock.c  		  mstype, lkb->lkb_flags);
lkb              1576 fs/dlm/lock.c  	if (overlap_done && lkb->lkb_wait_type) {
lkb              1578 fs/dlm/lock.c  			  lkb->lkb_id, mstype, lkb->lkb_wait_type);
lkb              1579 fs/dlm/lock.c  		lkb->lkb_wait_count--;
lkb              1580 fs/dlm/lock.c  		lkb->lkb_wait_type = 0;
lkb              1583 fs/dlm/lock.c  	DLM_ASSERT(lkb->lkb_wait_count, dlm_print_lkb(lkb););
lkb              1585 fs/dlm/lock.c  	lkb->lkb_flags &= ~DLM_IFL_RESEND;
lkb              1586 fs/dlm/lock.c  	lkb->lkb_wait_count--;
lkb              1587 fs/dlm/lock.c  	if (!lkb->lkb_wait_count)
lkb              1588 fs/dlm/lock.c  		list_del_init(&lkb->lkb_wait_reply);
lkb              1589 fs/dlm/lock.c  	unhold_lkb(lkb);
lkb              1593 fs/dlm/lock.c  static int remove_from_waiters(struct dlm_lkb *lkb, int mstype)
lkb              1595 fs/dlm/lock.c  	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb              1599 fs/dlm/lock.c  	error = _remove_from_waiters(lkb, mstype, NULL);
lkb              1607 fs/dlm/lock.c  static int remove_from_waiters_ms(struct dlm_lkb *lkb, struct dlm_message *ms)
lkb              1609 fs/dlm/lock.c  	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb              1614 fs/dlm/lock.c  	error = _remove_from_waiters(lkb, ms->m_type, ms);
lkb              1812 fs/dlm/lock.c  static void add_timeout(struct dlm_lkb *lkb)
lkb              1814 fs/dlm/lock.c  	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb              1816 fs/dlm/lock.c  	if (is_master_copy(lkb))
lkb              1820 fs/dlm/lock.c  	    !(lkb->lkb_exflags & DLM_LKF_NODLCKWT)) {
lkb              1821 fs/dlm/lock.c  		lkb->lkb_flags |= DLM_IFL_WATCH_TIMEWARN;
lkb              1824 fs/dlm/lock.c  	if (lkb->lkb_exflags & DLM_LKF_TIMEOUT)
lkb              1829 fs/dlm/lock.c  	DLM_ASSERT(list_empty(&lkb->lkb_time_list), dlm_print_lkb(lkb););
lkb              1831 fs/dlm/lock.c  	hold_lkb(lkb);
lkb              1832 fs/dlm/lock.c  	list_add_tail(&lkb->lkb_time_list, &ls->ls_timeout);
lkb              1836 fs/dlm/lock.c  static void del_timeout(struct dlm_lkb *lkb)
lkb              1838 fs/dlm/lock.c  	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb              1841 fs/dlm/lock.c  	if (!list_empty(&lkb->lkb_time_list)) {
lkb              1842 fs/dlm/lock.c  		list_del_init(&lkb->lkb_time_list);
lkb              1843 fs/dlm/lock.c  		unhold_lkb(lkb);
lkb              1857 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              1868 fs/dlm/lock.c  		list_for_each_entry(lkb, &ls->ls_timeout, lkb_time_list) {
lkb              1871 fs/dlm/lock.c  					      		lkb->lkb_timestamp));
lkb              1873 fs/dlm/lock.c  			if ((lkb->lkb_exflags & DLM_LKF_TIMEOUT) &&
lkb              1874 fs/dlm/lock.c  			    wait_us >= (lkb->lkb_timeout_cs * 10000))
lkb              1877 fs/dlm/lock.c  			if ((lkb->lkb_flags & DLM_IFL_WATCH_TIMEWARN) &&
lkb              1883 fs/dlm/lock.c  			hold_lkb(lkb);
lkb              1891 fs/dlm/lock.c  		r = lkb->lkb_resource;
lkb              1897 fs/dlm/lock.c  			lkb->lkb_flags &= ~DLM_IFL_WATCH_TIMEWARN;
lkb              1898 fs/dlm/lock.c  			if (!(lkb->lkb_exflags & DLM_LKF_TIMEOUT))
lkb              1899 fs/dlm/lock.c  				del_timeout(lkb);
lkb              1900 fs/dlm/lock.c  			dlm_timeout_warn(lkb);
lkb              1905 fs/dlm/lock.c  				  lkb->lkb_id, lkb->lkb_nodeid, r->res_name);
lkb              1906 fs/dlm/lock.c  			lkb->lkb_flags &= ~DLM_IFL_WATCH_TIMEWARN;
lkb              1907 fs/dlm/lock.c  			lkb->lkb_flags |= DLM_IFL_TIMEOUT_CANCEL;
lkb              1908 fs/dlm/lock.c  			del_timeout(lkb);
lkb              1909 fs/dlm/lock.c  			_cancel_lock(r, lkb);
lkb              1914 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              1923 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              1928 fs/dlm/lock.c  	list_for_each_entry(lkb, &ls->ls_timeout, lkb_time_list)
lkb              1929 fs/dlm/lock.c  		lkb->lkb_timestamp = ktime_add_us(lkb->lkb_timestamp, adj_us);
lkb              1936 fs/dlm/lock.c  	list_for_each_entry(lkb, &ls->ls_waiters, lkb_wait_reply) {
lkb              1937 fs/dlm/lock.c  		if (ktime_to_us(lkb->lkb_wait_time))
lkb              1938 fs/dlm/lock.c  			lkb->lkb_wait_time = ktime_get();
lkb              1945 fs/dlm/lock.c  static void set_lvb_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              1953 fs/dlm/lock.c  	b =  dlm_lvb_operations[lkb->lkb_grmode + 1][lkb->lkb_rqmode + 1];
lkb              1956 fs/dlm/lock.c  		if (!lkb->lkb_lvbptr)
lkb              1959 fs/dlm/lock.c  		if (!(lkb->lkb_exflags & DLM_LKF_VALBLK))
lkb              1965 fs/dlm/lock.c  		memcpy(lkb->lkb_lvbptr, r->res_lvbptr, len);
lkb              1966 fs/dlm/lock.c  		lkb->lkb_lvbseq = r->res_lvbseq;
lkb              1969 fs/dlm/lock.c  		if (lkb->lkb_exflags & DLM_LKF_IVVALBLK) {
lkb              1974 fs/dlm/lock.c  		if (!lkb->lkb_lvbptr)
lkb              1977 fs/dlm/lock.c  		if (!(lkb->lkb_exflags & DLM_LKF_VALBLK))
lkb              1986 fs/dlm/lock.c  		memcpy(r->res_lvbptr, lkb->lkb_lvbptr, len);
lkb              1988 fs/dlm/lock.c  		lkb->lkb_lvbseq = r->res_lvbseq;
lkb              1993 fs/dlm/lock.c  		lkb->lkb_sbflags |= DLM_SBF_VALNOTVALID;
lkb              1996 fs/dlm/lock.c  static void set_lvb_unlock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              1998 fs/dlm/lock.c  	if (lkb->lkb_grmode < DLM_LOCK_PW)
lkb              2001 fs/dlm/lock.c  	if (lkb->lkb_exflags & DLM_LKF_IVVALBLK) {
lkb              2006 fs/dlm/lock.c  	if (!lkb->lkb_lvbptr)
lkb              2009 fs/dlm/lock.c  	if (!(lkb->lkb_exflags & DLM_LKF_VALBLK))
lkb              2018 fs/dlm/lock.c  	memcpy(r->res_lvbptr, lkb->lkb_lvbptr, r->res_ls->ls_lvblen);
lkb              2025 fs/dlm/lock.c  static void set_lvb_lock_pc(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              2030 fs/dlm/lock.c  	if (!lkb->lkb_lvbptr)
lkb              2033 fs/dlm/lock.c  	if (!(lkb->lkb_exflags & DLM_LKF_VALBLK))
lkb              2036 fs/dlm/lock.c  	b = dlm_lvb_operations[lkb->lkb_grmode + 1][lkb->lkb_rqmode + 1];
lkb              2041 fs/dlm/lock.c  		memcpy(lkb->lkb_lvbptr, ms->m_extra, len);
lkb              2042 fs/dlm/lock.c  		lkb->lkb_lvbseq = ms->m_lvbseq;
lkb              2056 fs/dlm/lock.c  static void _remove_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2058 fs/dlm/lock.c  	del_lkb(r, lkb);
lkb              2059 fs/dlm/lock.c  	lkb->lkb_grmode = DLM_LOCK_IV;
lkb              2062 fs/dlm/lock.c  	unhold_lkb(lkb);
lkb              2065 fs/dlm/lock.c  static void remove_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2067 fs/dlm/lock.c  	set_lvb_unlock(r, lkb);
lkb              2068 fs/dlm/lock.c  	_remove_lock(r, lkb);
lkb              2071 fs/dlm/lock.c  static void remove_lock_pc(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2073 fs/dlm/lock.c  	_remove_lock(r, lkb);
lkb              2080 fs/dlm/lock.c  static int revert_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2084 fs/dlm/lock.c  	lkb->lkb_rqmode = DLM_LOCK_IV;
lkb              2086 fs/dlm/lock.c  	switch (lkb->lkb_status) {
lkb              2090 fs/dlm/lock.c  		move_lkb(r, lkb, DLM_LKSTS_GRANTED);
lkb              2094 fs/dlm/lock.c  		del_lkb(r, lkb);
lkb              2095 fs/dlm/lock.c  		lkb->lkb_grmode = DLM_LOCK_IV;
lkb              2098 fs/dlm/lock.c  		unhold_lkb(lkb);
lkb              2102 fs/dlm/lock.c  		log_print("invalid status for revert %d", lkb->lkb_status);
lkb              2107 fs/dlm/lock.c  static int revert_lock_pc(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2109 fs/dlm/lock.c  	return revert_lock(r, lkb);
lkb              2112 fs/dlm/lock.c  static void _grant_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2114 fs/dlm/lock.c  	if (lkb->lkb_grmode != lkb->lkb_rqmode) {
lkb              2115 fs/dlm/lock.c  		lkb->lkb_grmode = lkb->lkb_rqmode;
lkb              2116 fs/dlm/lock.c  		if (lkb->lkb_status)
lkb              2117 fs/dlm/lock.c  			move_lkb(r, lkb, DLM_LKSTS_GRANTED);
lkb              2119 fs/dlm/lock.c  			add_lkb(r, lkb, DLM_LKSTS_GRANTED);
lkb              2122 fs/dlm/lock.c  	lkb->lkb_rqmode = DLM_LOCK_IV;
lkb              2123 fs/dlm/lock.c  	lkb->lkb_highbast = 0;
lkb              2126 fs/dlm/lock.c  static void grant_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2128 fs/dlm/lock.c  	set_lvb_lock(r, lkb);
lkb              2129 fs/dlm/lock.c  	_grant_lock(r, lkb);
lkb              2132 fs/dlm/lock.c  static void grant_lock_pc(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              2135 fs/dlm/lock.c  	set_lvb_lock_pc(r, lkb, ms);
lkb              2136 fs/dlm/lock.c  	_grant_lock(r, lkb);
lkb              2143 fs/dlm/lock.c  static void grant_lock_pending(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2145 fs/dlm/lock.c  	grant_lock(r, lkb);
lkb              2146 fs/dlm/lock.c  	if (is_master_copy(lkb))
lkb              2147 fs/dlm/lock.c  		send_grant(r, lkb);
lkb              2149 fs/dlm/lock.c  		queue_cast(r, lkb, 0);
lkb              2160 fs/dlm/lock.c  static void munge_demoted(struct dlm_lkb *lkb)
lkb              2162 fs/dlm/lock.c  	if (lkb->lkb_rqmode == DLM_LOCK_IV || lkb->lkb_grmode == DLM_LOCK_IV) {
lkb              2164 fs/dlm/lock.c  			  lkb->lkb_id, lkb->lkb_grmode, lkb->lkb_rqmode);
lkb              2168 fs/dlm/lock.c  	lkb->lkb_grmode = DLM_LOCK_NL;
lkb              2171 fs/dlm/lock.c  static void munge_altmode(struct dlm_lkb *lkb, struct dlm_message *ms)
lkb              2176 fs/dlm/lock.c  			  lkb->lkb_id, ms->m_type);
lkb              2180 fs/dlm/lock.c  	if (lkb->lkb_exflags & DLM_LKF_ALTPR)
lkb              2181 fs/dlm/lock.c  		lkb->lkb_rqmode = DLM_LOCK_PR;
lkb              2182 fs/dlm/lock.c  	else if (lkb->lkb_exflags & DLM_LKF_ALTCW)
lkb              2183 fs/dlm/lock.c  		lkb->lkb_rqmode = DLM_LOCK_CW;
lkb              2185 fs/dlm/lock.c  		log_print("munge_altmode invalid exflags %x", lkb->lkb_exflags);
lkb              2186 fs/dlm/lock.c  		dlm_print_lkb(lkb);
lkb              2190 fs/dlm/lock.c  static inline int first_in_list(struct dlm_lkb *lkb, struct list_head *head)
lkb              2194 fs/dlm/lock.c  	if (lkb->lkb_id == first->lkb_id)
lkb              2202 fs/dlm/lock.c  static int queue_conflict(struct list_head *head, struct dlm_lkb *lkb)
lkb              2207 fs/dlm/lock.c  		if (this == lkb)
lkb              2209 fs/dlm/lock.c  		if (!modes_compat(this, lkb))
lkb              2295 fs/dlm/lock.c  static int _can_be_granted(struct dlm_rsb *r, struct dlm_lkb *lkb, int now,
lkb              2298 fs/dlm/lock.c  	int8_t conv = (lkb->lkb_grmode != DLM_LOCK_IV);
lkb              2319 fs/dlm/lock.c  	if (lkb->lkb_exflags & DLM_LKF_EXPEDITE)
lkb              2327 fs/dlm/lock.c  	if (queue_conflict(&r->res_grantqueue, lkb))
lkb              2336 fs/dlm/lock.c  	if (queue_conflict(&r->res_convertqueue, lkb))
lkb              2379 fs/dlm/lock.c  	if (now && conv && !(lkb->lkb_exflags & DLM_LKF_QUECVT))
lkb              2387 fs/dlm/lock.c  	if (now && conv && (lkb->lkb_exflags & DLM_LKF_QUECVT)) {
lkb              2399 fs/dlm/lock.c  	if (lkb->lkb_exflags & DLM_LKF_NOORDER)
lkb              2408 fs/dlm/lock.c  	if (!now && conv && first_in_list(lkb, &r->res_convertqueue))
lkb              2435 fs/dlm/lock.c  	    first_in_list(lkb, &r->res_waitqueue))
lkb              2441 fs/dlm/lock.c  static int can_be_granted(struct dlm_rsb *r, struct dlm_lkb *lkb, int now,
lkb              2445 fs/dlm/lock.c  	int8_t alt = 0, rqmode = lkb->lkb_rqmode;
lkb              2446 fs/dlm/lock.c  	int8_t is_convert = (lkb->lkb_grmode != DLM_LOCK_IV);
lkb              2451 fs/dlm/lock.c  	rv = _can_be_granted(r, lkb, now, recover);
lkb              2461 fs/dlm/lock.c  	if (is_convert && can_be_queued(lkb) &&
lkb              2462 fs/dlm/lock.c  	    conversion_deadlock_detect(r, lkb)) {
lkb              2463 fs/dlm/lock.c  		if (lkb->lkb_exflags & DLM_LKF_CONVDEADLK) {
lkb              2464 fs/dlm/lock.c  			lkb->lkb_grmode = DLM_LOCK_NL;
lkb              2465 fs/dlm/lock.c  			lkb->lkb_sbflags |= DLM_SBF_DEMOTED;
lkb              2470 fs/dlm/lock.c  				  lkb->lkb_id, now);
lkb              2483 fs/dlm/lock.c  	if (rqmode != DLM_LOCK_PR && (lkb->lkb_exflags & DLM_LKF_ALTPR))
lkb              2485 fs/dlm/lock.c  	else if (rqmode != DLM_LOCK_CW && (lkb->lkb_exflags & DLM_LKF_ALTCW))
lkb              2489 fs/dlm/lock.c  		lkb->lkb_rqmode = alt;
lkb              2490 fs/dlm/lock.c  		rv = _can_be_granted(r, lkb, now, 0);
lkb              2492 fs/dlm/lock.c  			lkb->lkb_sbflags |= DLM_SBF_ALTMODE;
lkb              2494 fs/dlm/lock.c  			lkb->lkb_rqmode = rqmode;
lkb              2506 fs/dlm/lock.c  	struct dlm_lkb *lkb, *s;
lkb              2517 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, s, &r->res_convertqueue, lkb_statequeue) {
lkb              2518 fs/dlm/lock.c  		demoted = is_demoted(lkb);
lkb              2521 fs/dlm/lock.c  		if (can_be_granted(r, lkb, 0, recover, &deadlk)) {
lkb              2522 fs/dlm/lock.c  			grant_lock_pending(r, lkb);
lkb              2529 fs/dlm/lock.c  		if (!demoted && is_demoted(lkb)) {
lkb              2531 fs/dlm/lock.c  				  lkb->lkb_id, lkb->lkb_nodeid, r->res_name);
lkb              2542 fs/dlm/lock.c  			if (lkb->lkb_exflags & DLM_LKF_NODLCKWT) {
lkb              2543 fs/dlm/lock.c  				if (lkb->lkb_highbast < lkb->lkb_rqmode) {
lkb              2544 fs/dlm/lock.c  					queue_bast(r, lkb, lkb->lkb_rqmode);
lkb              2545 fs/dlm/lock.c  					lkb->lkb_highbast = lkb->lkb_rqmode;
lkb              2549 fs/dlm/lock.c  					  lkb->lkb_id, lkb->lkb_nodeid,
lkb              2556 fs/dlm/lock.c  		hi = max_t(int, lkb->lkb_rqmode, hi);
lkb              2558 fs/dlm/lock.c  		if (cw && lkb->lkb_rqmode == DLM_LOCK_CW)
lkb              2575 fs/dlm/lock.c  	struct dlm_lkb *lkb, *s;
lkb              2577 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, s, &r->res_waitqueue, lkb_statequeue) {
lkb              2578 fs/dlm/lock.c  		if (can_be_granted(r, lkb, 0, 0, NULL)) {
lkb              2579 fs/dlm/lock.c  			grant_lock_pending(r, lkb);
lkb              2583 fs/dlm/lock.c  			high = max_t(int, lkb->lkb_rqmode, high);
lkb              2584 fs/dlm/lock.c  			if (lkb->lkb_rqmode == DLM_LOCK_CW)
lkb              2613 fs/dlm/lock.c  	struct dlm_lkb *lkb, *s;
lkb              2635 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, s, &r->res_grantqueue, lkb_statequeue) {
lkb              2636 fs/dlm/lock.c  		if (lkb->lkb_bastfn && lock_requires_bast(lkb, high, cw)) {
lkb              2638 fs/dlm/lock.c  			    lkb->lkb_grmode == DLM_LOCK_PR)
lkb              2639 fs/dlm/lock.c  				queue_bast(r, lkb, DLM_LOCK_CW);
lkb              2641 fs/dlm/lock.c  				queue_bast(r, lkb, high);
lkb              2642 fs/dlm/lock.c  			lkb->lkb_highbast = high;
lkb              2662 fs/dlm/lock.c  			    struct dlm_lkb *lkb)
lkb              2668 fs/dlm/lock.c  		if (gr == lkb)
lkb              2670 fs/dlm/lock.c  		if (gr->lkb_bastfn && modes_require_bast(gr, lkb)) {
lkb              2671 fs/dlm/lock.c  			queue_bast(r, gr, lkb->lkb_rqmode);
lkb              2672 fs/dlm/lock.c  			gr->lkb_highbast = lkb->lkb_rqmode;
lkb              2677 fs/dlm/lock.c  static void send_blocking_asts(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2679 fs/dlm/lock.c  	send_bast_queue(r, &r->res_grantqueue, lkb);
lkb              2682 fs/dlm/lock.c  static void send_blocking_asts_all(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2684 fs/dlm/lock.c  	send_bast_queue(r, &r->res_grantqueue, lkb);
lkb              2685 fs/dlm/lock.c  	send_bast_queue(r, &r->res_convertqueue, lkb);
lkb              2707 fs/dlm/lock.c  static int set_master(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              2713 fs/dlm/lock.c  		r->res_first_lkid = lkb->lkb_id;
lkb              2714 fs/dlm/lock.c  		lkb->lkb_nodeid = r->res_nodeid;
lkb              2718 fs/dlm/lock.c  	if (r->res_first_lkid && r->res_first_lkid != lkb->lkb_id) {
lkb              2719 fs/dlm/lock.c  		list_add_tail(&lkb->lkb_rsb_lookup, &r->res_lookup);
lkb              2724 fs/dlm/lock.c  		lkb->lkb_nodeid = 0;
lkb              2729 fs/dlm/lock.c  		lkb->lkb_nodeid = r->res_master_nodeid;
lkb              2741 fs/dlm/lock.c  			  lkb->lkb_id, r->res_master_nodeid, r->res_dir_nodeid,
lkb              2745 fs/dlm/lock.c  		lkb->lkb_nodeid = 0;
lkb              2751 fs/dlm/lock.c  	r->res_first_lkid = lkb->lkb_id;
lkb              2752 fs/dlm/lock.c  	send_lookup(r, lkb);
lkb              2758 fs/dlm/lock.c  	struct dlm_lkb *lkb, *safe;
lkb              2760 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, safe, &r->res_lookup, lkb_rsb_lookup) {
lkb              2761 fs/dlm/lock.c  		list_del_init(&lkb->lkb_rsb_lookup);
lkb              2762 fs/dlm/lock.c  		_request_lock(r, lkb);
lkb              2771 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              2793 fs/dlm/lock.c  			lkb = list_entry(r->res_lookup.next, struct dlm_lkb,
lkb              2795 fs/dlm/lock.c  			list_del_init(&lkb->lkb_rsb_lookup);
lkb              2796 fs/dlm/lock.c  			r->res_first_lkid = lkb->lkb_id;
lkb              2797 fs/dlm/lock.c  			_request_lock(r, lkb);
lkb              2886 fs/dlm/lock.c  static int validate_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              2892 fs/dlm/lock.c  		if (lkb->lkb_flags & DLM_IFL_MSTCPY)
lkb              2896 fs/dlm/lock.c  		    !__quecvt_compat_matrix[lkb->lkb_grmode+1][args->mode+1])
lkb              2900 fs/dlm/lock.c  		if (lkb->lkb_status != DLM_LKSTS_GRANTED)
lkb              2903 fs/dlm/lock.c  		if (lkb->lkb_wait_type)
lkb              2906 fs/dlm/lock.c  		if (is_overlap(lkb))
lkb              2910 fs/dlm/lock.c  	lkb->lkb_exflags = args->flags;
lkb              2911 fs/dlm/lock.c  	lkb->lkb_sbflags = 0;
lkb              2912 fs/dlm/lock.c  	lkb->lkb_astfn = args->astfn;
lkb              2913 fs/dlm/lock.c  	lkb->lkb_astparam = args->astparam;
lkb              2914 fs/dlm/lock.c  	lkb->lkb_bastfn = args->bastfn;
lkb              2915 fs/dlm/lock.c  	lkb->lkb_rqmode = args->mode;
lkb              2916 fs/dlm/lock.c  	lkb->lkb_lksb = args->lksb;
lkb              2917 fs/dlm/lock.c  	lkb->lkb_lvbptr = args->lksb->sb_lvbptr;
lkb              2918 fs/dlm/lock.c  	lkb->lkb_ownpid = (int) current->pid;
lkb              2919 fs/dlm/lock.c  	lkb->lkb_timeout_cs = args->timeout;
lkb              2924 fs/dlm/lock.c  			  rv, lkb->lkb_id, lkb->lkb_flags, args->flags,
lkb              2925 fs/dlm/lock.c  			  lkb->lkb_status, lkb->lkb_wait_type,
lkb              2926 fs/dlm/lock.c  			  lkb->lkb_resource->res_name);
lkb              2937 fs/dlm/lock.c  static int validate_unlock_args(struct dlm_lkb *lkb, struct dlm_args *args)
lkb              2939 fs/dlm/lock.c  	struct dlm_ls *ls = lkb->lkb_resource->res_ls;
lkb              2942 fs/dlm/lock.c  	if (lkb->lkb_flags & DLM_IFL_MSTCPY) {
lkb              2943 fs/dlm/lock.c  		log_error(ls, "unlock on MSTCPY %x", lkb->lkb_id);
lkb              2944 fs/dlm/lock.c  		dlm_print_lkb(lkb);
lkb              2952 fs/dlm/lock.c  	if (lkb->lkb_flags & DLM_IFL_ENDOFLIFE) {
lkb              2953 fs/dlm/lock.c  		log_debug(ls, "unlock on ENDOFLIFE %x", lkb->lkb_id);
lkb              2961 fs/dlm/lock.c  	if (!list_empty(&lkb->lkb_rsb_lookup)) {
lkb              2963 fs/dlm/lock.c  			log_debug(ls, "unlock on rsb_lookup %x", lkb->lkb_id);
lkb              2964 fs/dlm/lock.c  			list_del_init(&lkb->lkb_rsb_lookup);
lkb              2965 fs/dlm/lock.c  			queue_cast(lkb->lkb_resource, lkb,
lkb              2968 fs/dlm/lock.c  			unhold_lkb(lkb); /* undoes create_lkb() */
lkb              2978 fs/dlm/lock.c  		if (lkb->lkb_exflags & DLM_LKF_CANCEL)
lkb              2981 fs/dlm/lock.c  		if (is_overlap(lkb))
lkb              2985 fs/dlm/lock.c  		del_timeout(lkb);
lkb              2987 fs/dlm/lock.c  		if (lkb->lkb_flags & DLM_IFL_RESEND) {
lkb              2988 fs/dlm/lock.c  			lkb->lkb_flags |= DLM_IFL_OVERLAP_CANCEL;
lkb              2994 fs/dlm/lock.c  		if (lkb->lkb_status == DLM_LKSTS_GRANTED &&
lkb              2995 fs/dlm/lock.c  		    !lkb->lkb_wait_type) {
lkb              3000 fs/dlm/lock.c  		switch (lkb->lkb_wait_type) {
lkb              3003 fs/dlm/lock.c  			lkb->lkb_flags |= DLM_IFL_OVERLAP_CANCEL;
lkb              3019 fs/dlm/lock.c  		if (lkb->lkb_exflags & DLM_LKF_FORCEUNLOCK)
lkb              3022 fs/dlm/lock.c  		if (is_overlap_unlock(lkb))
lkb              3026 fs/dlm/lock.c  		del_timeout(lkb);
lkb              3028 fs/dlm/lock.c  		if (lkb->lkb_flags & DLM_IFL_RESEND) {
lkb              3029 fs/dlm/lock.c  			lkb->lkb_flags |= DLM_IFL_OVERLAP_UNLOCK;
lkb              3034 fs/dlm/lock.c  		switch (lkb->lkb_wait_type) {
lkb              3037 fs/dlm/lock.c  			lkb->lkb_flags |= DLM_IFL_OVERLAP_UNLOCK;
lkb              3049 fs/dlm/lock.c  	if (lkb->lkb_wait_type || lkb->lkb_wait_count)
lkb              3054 fs/dlm/lock.c  	lkb->lkb_exflags |= args->flags;
lkb              3055 fs/dlm/lock.c  	lkb->lkb_sbflags = 0;
lkb              3056 fs/dlm/lock.c  	lkb->lkb_astparam = args->astparam;
lkb              3061 fs/dlm/lock.c  			  lkb->lkb_id, lkb->lkb_flags, lkb->lkb_exflags,
lkb              3062 fs/dlm/lock.c  			  args->flags, lkb->lkb_wait_type,
lkb              3063 fs/dlm/lock.c  			  lkb->lkb_resource->res_name);
lkb              3074 fs/dlm/lock.c  static int do_request(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3078 fs/dlm/lock.c  	if (can_be_granted(r, lkb, 1, 0, NULL)) {
lkb              3079 fs/dlm/lock.c  		grant_lock(r, lkb);
lkb              3080 fs/dlm/lock.c  		queue_cast(r, lkb, 0);
lkb              3084 fs/dlm/lock.c  	if (can_be_queued(lkb)) {
lkb              3086 fs/dlm/lock.c  		add_lkb(r, lkb, DLM_LKSTS_WAITING);
lkb              3087 fs/dlm/lock.c  		add_timeout(lkb);
lkb              3092 fs/dlm/lock.c  	queue_cast(r, lkb, -EAGAIN);
lkb              3097 fs/dlm/lock.c  static void do_request_effects(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              3102 fs/dlm/lock.c  		if (force_blocking_asts(lkb))
lkb              3103 fs/dlm/lock.c  			send_blocking_asts_all(r, lkb);
lkb              3106 fs/dlm/lock.c  		send_blocking_asts(r, lkb);
lkb              3111 fs/dlm/lock.c  static int do_convert(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3118 fs/dlm/lock.c  	if (can_be_granted(r, lkb, 1, 0, &deadlk)) {
lkb              3119 fs/dlm/lock.c  		grant_lock(r, lkb);
lkb              3120 fs/dlm/lock.c  		queue_cast(r, lkb, 0);
lkb              3128 fs/dlm/lock.c  	if (deadlk && !(lkb->lkb_exflags & DLM_LKF_NODLCKWT)) {
lkb              3130 fs/dlm/lock.c  		revert_lock(r, lkb);
lkb              3131 fs/dlm/lock.c  		queue_cast(r, lkb, -EDEADLK);
lkb              3142 fs/dlm/lock.c  	if (is_demoted(lkb)) {
lkb              3144 fs/dlm/lock.c  		if (_can_be_granted(r, lkb, 1, 0)) {
lkb              3145 fs/dlm/lock.c  			grant_lock(r, lkb);
lkb              3146 fs/dlm/lock.c  			queue_cast(r, lkb, 0);
lkb              3152 fs/dlm/lock.c  	if (can_be_queued(lkb)) {
lkb              3154 fs/dlm/lock.c  		del_lkb(r, lkb);
lkb              3155 fs/dlm/lock.c  		add_lkb(r, lkb, DLM_LKSTS_CONVERT);
lkb              3156 fs/dlm/lock.c  		add_timeout(lkb);
lkb              3161 fs/dlm/lock.c  	queue_cast(r, lkb, -EAGAIN);
lkb              3166 fs/dlm/lock.c  static void do_convert_effects(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              3175 fs/dlm/lock.c  		if (force_blocking_asts(lkb))
lkb              3176 fs/dlm/lock.c  			send_blocking_asts_all(r, lkb);
lkb              3179 fs/dlm/lock.c  		send_blocking_asts(r, lkb);
lkb              3184 fs/dlm/lock.c  static int do_unlock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3186 fs/dlm/lock.c  	remove_lock(r, lkb);
lkb              3187 fs/dlm/lock.c  	queue_cast(r, lkb, -DLM_EUNLOCK);
lkb              3191 fs/dlm/lock.c  static void do_unlock_effects(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              3199 fs/dlm/lock.c  static int do_cancel(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3203 fs/dlm/lock.c  	error = revert_lock(r, lkb);
lkb              3205 fs/dlm/lock.c  		queue_cast(r, lkb, -DLM_ECANCEL);
lkb              3211 fs/dlm/lock.c  static void do_cancel_effects(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              3225 fs/dlm/lock.c  static int _request_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3231 fs/dlm/lock.c  	error = set_master(r, lkb);
lkb              3241 fs/dlm/lock.c  		error = send_request(r, lkb);
lkb              3243 fs/dlm/lock.c  		error = do_request(r, lkb);
lkb              3246 fs/dlm/lock.c  		do_request_effects(r, lkb, error);
lkb              3254 fs/dlm/lock.c  static int _convert_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3260 fs/dlm/lock.c  		error = send_convert(r, lkb);
lkb              3262 fs/dlm/lock.c  		error = do_convert(r, lkb);
lkb              3265 fs/dlm/lock.c  		do_convert_effects(r, lkb, error);
lkb              3273 fs/dlm/lock.c  static int _unlock_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3279 fs/dlm/lock.c  		error = send_unlock(r, lkb);
lkb              3281 fs/dlm/lock.c  		error = do_unlock(r, lkb);
lkb              3284 fs/dlm/lock.c  		do_unlock_effects(r, lkb, error);
lkb              3292 fs/dlm/lock.c  static int _cancel_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3298 fs/dlm/lock.c  		error = send_cancel(r, lkb);
lkb              3300 fs/dlm/lock.c  		error = do_cancel(r, lkb);
lkb              3303 fs/dlm/lock.c  		do_cancel_effects(r, lkb, error);
lkb              3314 fs/dlm/lock.c  static int request_lock(struct dlm_ls *ls, struct dlm_lkb *lkb, char *name,
lkb              3320 fs/dlm/lock.c  	error = validate_lock_args(ls, lkb, args);
lkb              3330 fs/dlm/lock.c  	attach_lkb(r, lkb);
lkb              3331 fs/dlm/lock.c  	lkb->lkb_lksb->sb_lkid = lkb->lkb_id;
lkb              3333 fs/dlm/lock.c  	error = _request_lock(r, lkb);
lkb              3340 fs/dlm/lock.c  static int convert_lock(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              3346 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              3351 fs/dlm/lock.c  	error = validate_lock_args(ls, lkb, args);
lkb              3355 fs/dlm/lock.c  	error = _convert_lock(r, lkb);
lkb              3362 fs/dlm/lock.c  static int unlock_lock(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              3368 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              3373 fs/dlm/lock.c  	error = validate_unlock_args(lkb, args);
lkb              3377 fs/dlm/lock.c  	error = _unlock_lock(r, lkb);
lkb              3384 fs/dlm/lock.c  static int cancel_lock(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              3390 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              3395 fs/dlm/lock.c  	error = validate_unlock_args(lkb, args);
lkb              3399 fs/dlm/lock.c  	error = _cancel_lock(r, lkb);
lkb              3422 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              3433 fs/dlm/lock.c  		error = find_lkb(ls, lksb->sb_lkid, &lkb);
lkb              3435 fs/dlm/lock.c  		error = create_lkb(ls, &lkb);
lkb              3446 fs/dlm/lock.c  		error = convert_lock(ls, lkb, &args);
lkb              3448 fs/dlm/lock.c  		error = request_lock(ls, lkb, name, namelen, &args);
lkb              3454 fs/dlm/lock.c  		__put_lkb(ls, lkb);
lkb              3470 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              3480 fs/dlm/lock.c  	error = find_lkb(ls, lkid, &lkb);
lkb              3489 fs/dlm/lock.c  		error = cancel_lock(ls, lkb, &args);
lkb              3491 fs/dlm/lock.c  		error = unlock_lock(ls, lkb, &args);
lkb              3498 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              3561 fs/dlm/lock.c  static int create_message(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              3579 fs/dlm/lock.c  		if (lkb && lkb->lkb_lvbptr)
lkb              3598 fs/dlm/lock.c  static void send_args(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              3601 fs/dlm/lock.c  	ms->m_nodeid   = lkb->lkb_nodeid;
lkb              3602 fs/dlm/lock.c  	ms->m_pid      = lkb->lkb_ownpid;
lkb              3603 fs/dlm/lock.c  	ms->m_lkid     = lkb->lkb_id;
lkb              3604 fs/dlm/lock.c  	ms->m_remid    = lkb->lkb_remid;
lkb              3605 fs/dlm/lock.c  	ms->m_exflags  = lkb->lkb_exflags;
lkb              3606 fs/dlm/lock.c  	ms->m_sbflags  = lkb->lkb_sbflags;
lkb              3607 fs/dlm/lock.c  	ms->m_flags    = lkb->lkb_flags;
lkb              3608 fs/dlm/lock.c  	ms->m_lvbseq   = lkb->lkb_lvbseq;
lkb              3609 fs/dlm/lock.c  	ms->m_status   = lkb->lkb_status;
lkb              3610 fs/dlm/lock.c  	ms->m_grmode   = lkb->lkb_grmode;
lkb              3611 fs/dlm/lock.c  	ms->m_rqmode   = lkb->lkb_rqmode;
lkb              3617 fs/dlm/lock.c  	if (lkb->lkb_bastfn)
lkb              3619 fs/dlm/lock.c  	if (lkb->lkb_astfn)
lkb              3635 fs/dlm/lock.c  		if (!lkb->lkb_lvbptr)
lkb              3637 fs/dlm/lock.c  		memcpy(ms->m_extra, lkb->lkb_lvbptr, r->res_ls->ls_lvblen);
lkb              3642 fs/dlm/lock.c  static int send_common(struct dlm_rsb *r, struct dlm_lkb *lkb, int mstype)
lkb              3650 fs/dlm/lock.c  	error = add_to_waiters(lkb, mstype, to_nodeid);
lkb              3654 fs/dlm/lock.c  	error = create_message(r, lkb, to_nodeid, mstype, &ms, &mh);
lkb              3658 fs/dlm/lock.c  	send_args(r, lkb, ms);
lkb              3666 fs/dlm/lock.c  	remove_from_waiters(lkb, msg_reply_type(mstype));
lkb              3670 fs/dlm/lock.c  static int send_request(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3672 fs/dlm/lock.c  	return send_common(r, lkb, DLM_MSG_REQUEST);
lkb              3675 fs/dlm/lock.c  static int send_convert(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3679 fs/dlm/lock.c  	error = send_common(r, lkb, DLM_MSG_CONVERT);
lkb              3682 fs/dlm/lock.c  	if (!error && down_conversion(lkb)) {
lkb              3683 fs/dlm/lock.c  		remove_from_waiters(lkb, DLM_MSG_CONVERT_REPLY);
lkb              3687 fs/dlm/lock.c  		__receive_convert_reply(r, lkb, &r->res_ls->ls_stub_ms);
lkb              3697 fs/dlm/lock.c  static int send_unlock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3699 fs/dlm/lock.c  	return send_common(r, lkb, DLM_MSG_UNLOCK);
lkb              3702 fs/dlm/lock.c  static int send_cancel(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3704 fs/dlm/lock.c  	return send_common(r, lkb, DLM_MSG_CANCEL);
lkb              3707 fs/dlm/lock.c  static int send_grant(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3713 fs/dlm/lock.c  	to_nodeid = lkb->lkb_nodeid;
lkb              3715 fs/dlm/lock.c  	error = create_message(r, lkb, to_nodeid, DLM_MSG_GRANT, &ms, &mh);
lkb              3719 fs/dlm/lock.c  	send_args(r, lkb, ms);
lkb              3728 fs/dlm/lock.c  static int send_bast(struct dlm_rsb *r, struct dlm_lkb *lkb, int mode)
lkb              3734 fs/dlm/lock.c  	to_nodeid = lkb->lkb_nodeid;
lkb              3740 fs/dlm/lock.c  	send_args(r, lkb, ms);
lkb              3749 fs/dlm/lock.c  static int send_lookup(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb              3757 fs/dlm/lock.c  	error = add_to_waiters(lkb, DLM_MSG_LOOKUP, to_nodeid);
lkb              3765 fs/dlm/lock.c  	send_args(r, lkb, ms);
lkb              3773 fs/dlm/lock.c  	remove_from_waiters(lkb, DLM_MSG_LOOKUP_REPLY);
lkb              3797 fs/dlm/lock.c  static int send_common_reply(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              3804 fs/dlm/lock.c  	to_nodeid = lkb->lkb_nodeid;
lkb              3806 fs/dlm/lock.c  	error = create_message(r, lkb, to_nodeid, mstype, &ms, &mh);
lkb              3810 fs/dlm/lock.c  	send_args(r, lkb, ms);
lkb              3819 fs/dlm/lock.c  static int send_request_reply(struct dlm_rsb *r, struct dlm_lkb *lkb, int rv)
lkb              3821 fs/dlm/lock.c  	return send_common_reply(r, lkb, DLM_MSG_REQUEST_REPLY, rv);
lkb              3824 fs/dlm/lock.c  static int send_convert_reply(struct dlm_rsb *r, struct dlm_lkb *lkb, int rv)
lkb              3826 fs/dlm/lock.c  	return send_common_reply(r, lkb, DLM_MSG_CONVERT_REPLY, rv);
lkb              3829 fs/dlm/lock.c  static int send_unlock_reply(struct dlm_rsb *r, struct dlm_lkb *lkb, int rv)
lkb              3831 fs/dlm/lock.c  	return send_common_reply(r, lkb, DLM_MSG_UNLOCK_REPLY, rv);
lkb              3834 fs/dlm/lock.c  static int send_cancel_reply(struct dlm_rsb *r, struct dlm_lkb *lkb, int rv)
lkb              3836 fs/dlm/lock.c  	return send_common_reply(r, lkb, DLM_MSG_CANCEL_REPLY, rv);
lkb              3864 fs/dlm/lock.c  static void receive_flags(struct dlm_lkb *lkb, struct dlm_message *ms)
lkb              3866 fs/dlm/lock.c  	lkb->lkb_exflags = ms->m_exflags;
lkb              3867 fs/dlm/lock.c  	lkb->lkb_sbflags = ms->m_sbflags;
lkb              3868 fs/dlm/lock.c  	lkb->lkb_flags = (lkb->lkb_flags & 0xFFFF0000) |
lkb              3872 fs/dlm/lock.c  static void receive_flags_reply(struct dlm_lkb *lkb, struct dlm_message *ms)
lkb              3877 fs/dlm/lock.c  	lkb->lkb_sbflags = ms->m_sbflags;
lkb              3878 fs/dlm/lock.c  	lkb->lkb_flags = (lkb->lkb_flags & 0xFFFF0000) |
lkb              3887 fs/dlm/lock.c  static int receive_lvb(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              3892 fs/dlm/lock.c  	if (lkb->lkb_exflags & DLM_LKF_VALBLK) {
lkb              3893 fs/dlm/lock.c  		if (!lkb->lkb_lvbptr)
lkb              3894 fs/dlm/lock.c  			lkb->lkb_lvbptr = dlm_allocate_lvb(ls);
lkb              3895 fs/dlm/lock.c  		if (!lkb->lkb_lvbptr)
lkb              3900 fs/dlm/lock.c  		memcpy(lkb->lkb_lvbptr, ms->m_extra, len);
lkb              3915 fs/dlm/lock.c  static int receive_request_args(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              3918 fs/dlm/lock.c  	lkb->lkb_nodeid = ms->m_header.h_nodeid;
lkb              3919 fs/dlm/lock.c  	lkb->lkb_ownpid = ms->m_pid;
lkb              3920 fs/dlm/lock.c  	lkb->lkb_remid = ms->m_lkid;
lkb              3921 fs/dlm/lock.c  	lkb->lkb_grmode = DLM_LOCK_IV;
lkb              3922 fs/dlm/lock.c  	lkb->lkb_rqmode = ms->m_rqmode;
lkb              3924 fs/dlm/lock.c  	lkb->lkb_bastfn = (ms->m_asts & DLM_CB_BAST) ? &fake_bastfn : NULL;
lkb              3925 fs/dlm/lock.c  	lkb->lkb_astfn = (ms->m_asts & DLM_CB_CAST) ? &fake_astfn : NULL;
lkb              3927 fs/dlm/lock.c  	if (lkb->lkb_exflags & DLM_LKF_VALBLK) {
lkb              3929 fs/dlm/lock.c  		lkb->lkb_lvbptr = dlm_allocate_lvb(ls);
lkb              3930 fs/dlm/lock.c  		if (!lkb->lkb_lvbptr)
lkb              3937 fs/dlm/lock.c  static int receive_convert_args(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              3940 fs/dlm/lock.c  	if (lkb->lkb_status != DLM_LKSTS_GRANTED)
lkb              3943 fs/dlm/lock.c  	if (receive_lvb(ls, lkb, ms))
lkb              3946 fs/dlm/lock.c  	lkb->lkb_rqmode = ms->m_rqmode;
lkb              3947 fs/dlm/lock.c  	lkb->lkb_lvbseq = ms->m_lvbseq;
lkb              3952 fs/dlm/lock.c  static int receive_unlock_args(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              3955 fs/dlm/lock.c  	if (receive_lvb(ls, lkb, ms))
lkb              3965 fs/dlm/lock.c  	struct dlm_lkb *lkb = &ls->ls_stub_lkb;
lkb              3966 fs/dlm/lock.c  	lkb->lkb_nodeid = ms->m_header.h_nodeid;
lkb              3967 fs/dlm/lock.c  	lkb->lkb_remid = ms->m_lkid;
lkb              3973 fs/dlm/lock.c  static int validate_message(struct dlm_lkb *lkb, struct dlm_message *ms)
lkb              3982 fs/dlm/lock.c  		if (!is_master_copy(lkb) || lkb->lkb_nodeid != from)
lkb              3991 fs/dlm/lock.c  		if (!is_process_copy(lkb) || lkb->lkb_nodeid != from)
lkb              3996 fs/dlm/lock.c  		if (!is_process_copy(lkb))
lkb              3998 fs/dlm/lock.c  		else if (lkb->lkb_nodeid != -1 && lkb->lkb_nodeid != from)
lkb              4007 fs/dlm/lock.c  		log_error(lkb->lkb_resource->res_ls,
lkb              4009 fs/dlm/lock.c  			  ms->m_type, from, lkb->lkb_id, lkb->lkb_remid,
lkb              4010 fs/dlm/lock.c  			  lkb->lkb_flags, lkb->lkb_nodeid);
lkb              4074 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4081 fs/dlm/lock.c  	error = create_lkb(ls, &lkb);
lkb              4085 fs/dlm/lock.c  	receive_flags(lkb, ms);
lkb              4086 fs/dlm/lock.c  	lkb->lkb_flags |= DLM_IFL_MSTCPY;
lkb              4087 fs/dlm/lock.c  	error = receive_request_args(ls, lkb, ms);
lkb              4089 fs/dlm/lock.c  		__put_lkb(ls, lkb);
lkb              4104 fs/dlm/lock.c  		__put_lkb(ls, lkb);
lkb              4115 fs/dlm/lock.c  			__put_lkb(ls, lkb);
lkb              4120 fs/dlm/lock.c  	attach_lkb(r, lkb);
lkb              4121 fs/dlm/lock.c  	error = do_request(r, lkb);
lkb              4122 fs/dlm/lock.c  	send_request_reply(r, lkb, error);
lkb              4123 fs/dlm/lock.c  	do_request_effects(r, lkb, error);
lkb              4131 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              4167 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4171 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_remid, &lkb);
lkb              4175 fs/dlm/lock.c  	if (lkb->lkb_remid != ms->m_lkid) {
lkb              4177 fs/dlm/lock.c  			  "remote %d %x", lkb->lkb_id, lkb->lkb_remid,
lkb              4178 fs/dlm/lock.c  			  (unsigned long long)lkb->lkb_recover_seq,
lkb              4181 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              4185 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              4190 fs/dlm/lock.c  	error = validate_message(lkb, ms);
lkb              4194 fs/dlm/lock.c  	receive_flags(lkb, ms);
lkb              4196 fs/dlm/lock.c  	error = receive_convert_args(ls, lkb, ms);
lkb              4198 fs/dlm/lock.c  		send_convert_reply(r, lkb, error);
lkb              4202 fs/dlm/lock.c  	reply = !down_conversion(lkb);
lkb              4204 fs/dlm/lock.c  	error = do_convert(r, lkb);
lkb              4206 fs/dlm/lock.c  		send_convert_reply(r, lkb, error);
lkb              4207 fs/dlm/lock.c  	do_convert_effects(r, lkb, error);
lkb              4211 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              4222 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4226 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_remid, &lkb);
lkb              4230 fs/dlm/lock.c  	if (lkb->lkb_remid != ms->m_lkid) {
lkb              4232 fs/dlm/lock.c  			  lkb->lkb_id, lkb->lkb_remid,
lkb              4235 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              4239 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              4244 fs/dlm/lock.c  	error = validate_message(lkb, ms);
lkb              4248 fs/dlm/lock.c  	receive_flags(lkb, ms);
lkb              4250 fs/dlm/lock.c  	error = receive_unlock_args(ls, lkb, ms);
lkb              4252 fs/dlm/lock.c  		send_unlock_reply(r, lkb, error);
lkb              4256 fs/dlm/lock.c  	error = do_unlock(r, lkb);
lkb              4257 fs/dlm/lock.c  	send_unlock_reply(r, lkb, error);
lkb              4258 fs/dlm/lock.c  	do_unlock_effects(r, lkb, error);
lkb              4262 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              4273 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4277 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_remid, &lkb);
lkb              4281 fs/dlm/lock.c  	receive_flags(lkb, ms);
lkb              4283 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              4288 fs/dlm/lock.c  	error = validate_message(lkb, ms);
lkb              4292 fs/dlm/lock.c  	error = do_cancel(r, lkb);
lkb              4293 fs/dlm/lock.c  	send_cancel_reply(r, lkb, error);
lkb              4294 fs/dlm/lock.c  	do_cancel_effects(r, lkb, error);
lkb              4298 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              4309 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4313 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_remid, &lkb);
lkb              4317 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              4322 fs/dlm/lock.c  	error = validate_message(lkb, ms);
lkb              4326 fs/dlm/lock.c  	receive_flags_reply(lkb, ms);
lkb              4327 fs/dlm/lock.c  	if (is_altmode(lkb))
lkb              4328 fs/dlm/lock.c  		munge_altmode(lkb, ms);
lkb              4329 fs/dlm/lock.c  	grant_lock_pc(r, lkb, ms);
lkb              4330 fs/dlm/lock.c  	queue_cast(r, lkb, 0);
lkb              4334 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              4340 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4344 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_remid, &lkb);
lkb              4348 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              4353 fs/dlm/lock.c  	error = validate_message(lkb, ms);
lkb              4357 fs/dlm/lock.c  	queue_bast(r, lkb, ms->m_bastmode);
lkb              4358 fs/dlm/lock.c  	lkb->lkb_highbast = ms->m_bastmode;
lkb              4362 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              4481 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4486 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_remid, &lkb);
lkb              4490 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              4494 fs/dlm/lock.c  	error = validate_message(lkb, ms);
lkb              4498 fs/dlm/lock.c  	mstype = lkb->lkb_wait_type;
lkb              4499 fs/dlm/lock.c  	error = remove_from_waiters(lkb, DLM_MSG_REQUEST_REPLY);
lkb              4502 fs/dlm/lock.c  			  lkb->lkb_id, from_nodeid, ms->m_lkid, ms->m_result);
lkb              4512 fs/dlm/lock.c  		lkb->lkb_nodeid = from_nodeid;
lkb              4521 fs/dlm/lock.c  		queue_cast(r, lkb, -EAGAIN);
lkb              4523 fs/dlm/lock.c  		unhold_lkb(lkb); /* undoes create_lkb() */
lkb              4529 fs/dlm/lock.c  		receive_flags_reply(lkb, ms);
lkb              4530 fs/dlm/lock.c  		lkb->lkb_remid = ms->m_lkid;
lkb              4531 fs/dlm/lock.c  		if (is_altmode(lkb))
lkb              4532 fs/dlm/lock.c  			munge_altmode(lkb, ms);
lkb              4534 fs/dlm/lock.c  			add_lkb(r, lkb, DLM_LKSTS_WAITING);
lkb              4535 fs/dlm/lock.c  			add_timeout(lkb);
lkb              4537 fs/dlm/lock.c  			grant_lock_pc(r, lkb, ms);
lkb              4538 fs/dlm/lock.c  			queue_cast(r, lkb, 0);
lkb              4547 fs/dlm/lock.c  			  "master %d dir %d first %x %s", lkb->lkb_id,
lkb              4556 fs/dlm/lock.c  			lkb->lkb_nodeid = -1;
lkb              4559 fs/dlm/lock.c  		if (is_overlap(lkb)) {
lkb              4561 fs/dlm/lock.c  			queue_cast_overlap(r, lkb);
lkb              4563 fs/dlm/lock.c  			unhold_lkb(lkb); /* undoes create_lkb() */
lkb              4565 fs/dlm/lock.c  			_request_lock(r, lkb);
lkb              4574 fs/dlm/lock.c  			  lkb->lkb_id, result);
lkb              4577 fs/dlm/lock.c  	if (is_overlap_unlock(lkb) && (result == 0 || result == -EINPROGRESS)) {
lkb              4579 fs/dlm/lock.c  			  lkb->lkb_id, result);
lkb              4580 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_UNLOCK;
lkb              4581 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_CANCEL;
lkb              4582 fs/dlm/lock.c  		send_unlock(r, lkb);
lkb              4583 fs/dlm/lock.c  	} else if (is_overlap_cancel(lkb) && (result == -EINPROGRESS)) {
lkb              4584 fs/dlm/lock.c  		log_debug(ls, "receive_request_reply %x cancel", lkb->lkb_id);
lkb              4585 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_UNLOCK;
lkb              4586 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_CANCEL;
lkb              4587 fs/dlm/lock.c  		send_cancel(r, lkb);
lkb              4589 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_CANCEL;
lkb              4590 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_UNLOCK;
lkb              4595 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              4599 fs/dlm/lock.c  static void __receive_convert_reply(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb              4606 fs/dlm/lock.c  		queue_cast(r, lkb, -EAGAIN);
lkb              4610 fs/dlm/lock.c  		receive_flags_reply(lkb, ms);
lkb              4611 fs/dlm/lock.c  		revert_lock_pc(r, lkb);
lkb              4612 fs/dlm/lock.c  		queue_cast(r, lkb, -EDEADLK);
lkb              4617 fs/dlm/lock.c  		receive_flags_reply(lkb, ms);
lkb              4618 fs/dlm/lock.c  		if (is_demoted(lkb))
lkb              4619 fs/dlm/lock.c  			munge_demoted(lkb);
lkb              4620 fs/dlm/lock.c  		del_lkb(r, lkb);
lkb              4621 fs/dlm/lock.c  		add_lkb(r, lkb, DLM_LKSTS_CONVERT);
lkb              4622 fs/dlm/lock.c  		add_timeout(lkb);
lkb              4627 fs/dlm/lock.c  		receive_flags_reply(lkb, ms);
lkb              4628 fs/dlm/lock.c  		if (is_demoted(lkb))
lkb              4629 fs/dlm/lock.c  			munge_demoted(lkb);
lkb              4630 fs/dlm/lock.c  		grant_lock_pc(r, lkb, ms);
lkb              4631 fs/dlm/lock.c  		queue_cast(r, lkb, 0);
lkb              4636 fs/dlm/lock.c  			  lkb->lkb_id, ms->m_header.h_nodeid, ms->m_lkid,
lkb              4639 fs/dlm/lock.c  		dlm_print_lkb(lkb);
lkb              4643 fs/dlm/lock.c  static void _receive_convert_reply(struct dlm_lkb *lkb, struct dlm_message *ms)
lkb              4645 fs/dlm/lock.c  	struct dlm_rsb *r = lkb->lkb_resource;
lkb              4651 fs/dlm/lock.c  	error = validate_message(lkb, ms);
lkb              4656 fs/dlm/lock.c  	error = remove_from_waiters_ms(lkb, ms);
lkb              4660 fs/dlm/lock.c  	__receive_convert_reply(r, lkb, ms);
lkb              4668 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4671 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_remid, &lkb);
lkb              4675 fs/dlm/lock.c  	_receive_convert_reply(lkb, ms);
lkb              4676 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              4680 fs/dlm/lock.c  static void _receive_unlock_reply(struct dlm_lkb *lkb, struct dlm_message *ms)
lkb              4682 fs/dlm/lock.c  	struct dlm_rsb *r = lkb->lkb_resource;
lkb              4688 fs/dlm/lock.c  	error = validate_message(lkb, ms);
lkb              4693 fs/dlm/lock.c  	error = remove_from_waiters_ms(lkb, ms);
lkb              4701 fs/dlm/lock.c  		receive_flags_reply(lkb, ms);
lkb              4702 fs/dlm/lock.c  		remove_lock_pc(r, lkb);
lkb              4703 fs/dlm/lock.c  		queue_cast(r, lkb, -DLM_EUNLOCK);
lkb              4709 fs/dlm/lock.c  			  lkb->lkb_id, ms->m_result);
lkb              4718 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4721 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_remid, &lkb);
lkb              4725 fs/dlm/lock.c  	_receive_unlock_reply(lkb, ms);
lkb              4726 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              4730 fs/dlm/lock.c  static void _receive_cancel_reply(struct dlm_lkb *lkb, struct dlm_message *ms)
lkb              4732 fs/dlm/lock.c  	struct dlm_rsb *r = lkb->lkb_resource;
lkb              4738 fs/dlm/lock.c  	error = validate_message(lkb, ms);
lkb              4743 fs/dlm/lock.c  	error = remove_from_waiters_ms(lkb, ms);
lkb              4751 fs/dlm/lock.c  		receive_flags_reply(lkb, ms);
lkb              4752 fs/dlm/lock.c  		revert_lock_pc(r, lkb);
lkb              4753 fs/dlm/lock.c  		queue_cast(r, lkb, -DLM_ECANCEL);
lkb              4759 fs/dlm/lock.c  			  lkb->lkb_id, ms->m_result);
lkb              4768 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4771 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_remid, &lkb);
lkb              4775 fs/dlm/lock.c  	_receive_cancel_reply(lkb, ms);
lkb              4776 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              4782 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              4787 fs/dlm/lock.c  	error = find_lkb(ls, ms->m_lkid, &lkb);
lkb              4796 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              4800 fs/dlm/lock.c  	error = remove_from_waiters(lkb, DLM_MSG_LOOKUP_REPLY);
lkb              4816 fs/dlm/lock.c  			  lkb->lkb_id, ms->m_header.h_nodeid, ret_nodeid,
lkb              4829 fs/dlm/lock.c  			  lkb->lkb_id, ms->m_header.h_nodeid);
lkb              4832 fs/dlm/lock.c  		lkb->lkb_nodeid = -1;
lkb              4839 fs/dlm/lock.c  	if (is_overlap(lkb)) {
lkb              4841 fs/dlm/lock.c  			  lkb->lkb_id, lkb->lkb_flags);
lkb              4842 fs/dlm/lock.c  		queue_cast_overlap(r, lkb);
lkb              4843 fs/dlm/lock.c  		unhold_lkb(lkb); /* undoes create_lkb() */
lkb              4847 fs/dlm/lock.c  	_request_lock(r, lkb);
lkb              4855 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              5073 fs/dlm/lock.c  static void recover_convert_waiter(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              5076 fs/dlm/lock.c  	if (middle_conversion(lkb)) {
lkb              5077 fs/dlm/lock.c  		hold_lkb(lkb);
lkb              5082 fs/dlm/lock.c  		ms_stub->m_header.h_nodeid = lkb->lkb_nodeid;
lkb              5083 fs/dlm/lock.c  		_receive_convert_reply(lkb, ms_stub);
lkb              5086 fs/dlm/lock.c  		lkb->lkb_grmode = DLM_LOCK_IV;
lkb              5087 fs/dlm/lock.c  		rsb_set_flag(lkb->lkb_resource, RSB_RECOVER_CONVERT);
lkb              5088 fs/dlm/lock.c  		unhold_lkb(lkb);
lkb              5090 fs/dlm/lock.c  	} else if (lkb->lkb_rqmode >= lkb->lkb_grmode) {
lkb              5091 fs/dlm/lock.c  		lkb->lkb_flags |= DLM_IFL_RESEND;
lkb              5101 fs/dlm/lock.c  static int waiter_needs_recovery(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              5107 fs/dlm/lock.c  	if (dlm_is_removed(ls, lkb->lkb_wait_nodeid))
lkb              5121 fs/dlm/lock.c  	struct dlm_lkb *lkb, *safe;
lkb              5132 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, safe, &ls->ls_waiters, lkb_wait_reply) {
lkb              5134 fs/dlm/lock.c  		dir_nodeid = dlm_dir_nodeid(lkb->lkb_resource);
lkb              5139 fs/dlm/lock.c  		if (lkb->lkb_wait_type != DLM_MSG_UNLOCK) {
lkb              5142 fs/dlm/lock.c  				  lkb->lkb_id,
lkb              5143 fs/dlm/lock.c  				  lkb->lkb_remid,
lkb              5144 fs/dlm/lock.c  				  lkb->lkb_wait_type,
lkb              5145 fs/dlm/lock.c  				  lkb->lkb_resource->res_nodeid,
lkb              5146 fs/dlm/lock.c  				  lkb->lkb_nodeid,
lkb              5147 fs/dlm/lock.c  				  lkb->lkb_wait_nodeid,
lkb              5154 fs/dlm/lock.c  		if (lkb->lkb_wait_type == DLM_MSG_LOOKUP) {
lkb              5155 fs/dlm/lock.c  			lkb->lkb_flags |= DLM_IFL_RESEND;
lkb              5159 fs/dlm/lock.c  		if (!waiter_needs_recovery(ls, lkb, dir_nodeid))
lkb              5162 fs/dlm/lock.c  		wait_type = lkb->lkb_wait_type;
lkb              5172 fs/dlm/lock.c  			if (is_overlap_cancel(lkb)) {
lkb              5174 fs/dlm/lock.c  				if (lkb->lkb_grmode == DLM_LOCK_IV)
lkb              5177 fs/dlm/lock.c  			if (is_overlap_unlock(lkb)) {
lkb              5179 fs/dlm/lock.c  				if (lkb->lkb_grmode == DLM_LOCK_IV)
lkb              5184 fs/dlm/lock.c  				  lkb->lkb_id, lkb->lkb_flags, wait_type,
lkb              5191 fs/dlm/lock.c  			lkb->lkb_flags |= DLM_IFL_RESEND;
lkb              5195 fs/dlm/lock.c  			recover_convert_waiter(ls, lkb, ms_stub);
lkb              5199 fs/dlm/lock.c  			hold_lkb(lkb);
lkb              5204 fs/dlm/lock.c  			ms_stub->m_header.h_nodeid = lkb->lkb_nodeid;
lkb              5205 fs/dlm/lock.c  			_receive_unlock_reply(lkb, ms_stub);
lkb              5206 fs/dlm/lock.c  			dlm_put_lkb(lkb);
lkb              5210 fs/dlm/lock.c  			hold_lkb(lkb);
lkb              5215 fs/dlm/lock.c  			ms_stub->m_header.h_nodeid = lkb->lkb_nodeid;
lkb              5216 fs/dlm/lock.c  			_receive_cancel_reply(lkb, ms_stub);
lkb              5217 fs/dlm/lock.c  			dlm_put_lkb(lkb);
lkb              5222 fs/dlm/lock.c  				  lkb->lkb_wait_type, wait_type);
lkb              5232 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5236 fs/dlm/lock.c  	list_for_each_entry(lkb, &ls->ls_waiters, lkb_wait_reply) {
lkb              5237 fs/dlm/lock.c  		if (lkb->lkb_flags & DLM_IFL_RESEND) {
lkb              5238 fs/dlm/lock.c  			hold_lkb(lkb);
lkb              5246 fs/dlm/lock.c  		lkb = NULL;
lkb              5247 fs/dlm/lock.c  	return lkb;
lkb              5268 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5279 fs/dlm/lock.c  		lkb = find_resend_waiter(ls);
lkb              5280 fs/dlm/lock.c  		if (!lkb)
lkb              5283 fs/dlm/lock.c  		r = lkb->lkb_resource;
lkb              5287 fs/dlm/lock.c  		mstype = lkb->lkb_wait_type;
lkb              5288 fs/dlm/lock.c  		oc = is_overlap_cancel(lkb);
lkb              5289 fs/dlm/lock.c  		ou = is_overlap_unlock(lkb);
lkb              5294 fs/dlm/lock.c  			  "overlap %d %d", lkb->lkb_id, lkb->lkb_remid, mstype,
lkb              5295 fs/dlm/lock.c  			  r->res_nodeid, lkb->lkb_nodeid, lkb->lkb_wait_nodeid,
lkb              5302 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_RESEND;
lkb              5303 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_UNLOCK;
lkb              5304 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_OVERLAP_CANCEL;
lkb              5305 fs/dlm/lock.c  		lkb->lkb_wait_type = 0;
lkb              5306 fs/dlm/lock.c  		lkb->lkb_wait_count = 0;
lkb              5308 fs/dlm/lock.c  		list_del_init(&lkb->lkb_wait_reply);
lkb              5310 fs/dlm/lock.c  		unhold_lkb(lkb); /* for waiters list */
lkb              5317 fs/dlm/lock.c  				queue_cast(r, lkb, ou ? -DLM_EUNLOCK :
lkb              5319 fs/dlm/lock.c  				unhold_lkb(lkb); /* undoes create_lkb() */
lkb              5323 fs/dlm/lock.c  					queue_cast(r, lkb, -DLM_ECANCEL);
lkb              5325 fs/dlm/lock.c  					lkb->lkb_exflags |= DLM_LKF_FORCEUNLOCK;
lkb              5326 fs/dlm/lock.c  					_unlock_lock(r, lkb);
lkb              5336 fs/dlm/lock.c  				_request_lock(r, lkb);
lkb              5341 fs/dlm/lock.c  				_convert_lock(r, lkb);
lkb              5351 fs/dlm/lock.c  				  lkb->lkb_id, mstype, r->res_nodeid,
lkb              5356 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              5365 fs/dlm/lock.c  	struct dlm_lkb *lkb, *safe;
lkb              5367 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, safe, list, lkb_statequeue) {
lkb              5368 fs/dlm/lock.c  		if (!is_master_copy(lkb))
lkb              5374 fs/dlm/lock.c  		if (lkb->lkb_recover_seq == ls->ls_recover_seq)
lkb              5377 fs/dlm/lock.c  		del_lkb(r, lkb);
lkb              5380 fs/dlm/lock.c  		if (!dlm_put_lkb(lkb))
lkb              5398 fs/dlm/lock.c  	struct dlm_lkb *lkb, *safe;
lkb              5400 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, safe, list, lkb_statequeue) {
lkb              5401 fs/dlm/lock.c  		if (!is_master_copy(lkb))
lkb              5404 fs/dlm/lock.c  		if ((lkb->lkb_nodeid == nodeid_gone) ||
lkb              5405 fs/dlm/lock.c  		    dlm_is_removed(ls, lkb->lkb_nodeid)) {
lkb              5409 fs/dlm/lock.c  			if ((lkb->lkb_exflags & DLM_LKF_VALBLK) &&
lkb              5410 fs/dlm/lock.c  			    (lkb->lkb_grmode >= DLM_LOCK_PW)) {
lkb              5414 fs/dlm/lock.c  			del_lkb(r, lkb);
lkb              5417 fs/dlm/lock.c  			if (!dlm_put_lkb(lkb))
lkb              5548 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5550 fs/dlm/lock.c  	list_for_each_entry(lkb, head, lkb_statequeue) {
lkb              5551 fs/dlm/lock.c  		if (lkb->lkb_nodeid == nodeid && lkb->lkb_remid == remid)
lkb              5552 fs/dlm/lock.c  			return lkb;
lkb              5560 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5562 fs/dlm/lock.c  	lkb = search_remid_list(&r->res_grantqueue, nodeid, remid);
lkb              5563 fs/dlm/lock.c  	if (lkb)
lkb              5564 fs/dlm/lock.c  		return lkb;
lkb              5565 fs/dlm/lock.c  	lkb = search_remid_list(&r->res_convertqueue, nodeid, remid);
lkb              5566 fs/dlm/lock.c  	if (lkb)
lkb              5567 fs/dlm/lock.c  		return lkb;
lkb              5568 fs/dlm/lock.c  	lkb = search_remid_list(&r->res_waitqueue, nodeid, remid);
lkb              5569 fs/dlm/lock.c  	if (lkb)
lkb              5570 fs/dlm/lock.c  		return lkb;
lkb              5575 fs/dlm/lock.c  static int receive_rcom_lock_args(struct dlm_ls *ls, struct dlm_lkb *lkb,
lkb              5580 fs/dlm/lock.c  	lkb->lkb_nodeid = rc->rc_header.h_nodeid;
lkb              5581 fs/dlm/lock.c  	lkb->lkb_ownpid = le32_to_cpu(rl->rl_ownpid);
lkb              5582 fs/dlm/lock.c  	lkb->lkb_remid = le32_to_cpu(rl->rl_lkid);
lkb              5583 fs/dlm/lock.c  	lkb->lkb_exflags = le32_to_cpu(rl->rl_exflags);
lkb              5584 fs/dlm/lock.c  	lkb->lkb_flags = le32_to_cpu(rl->rl_flags) & 0x0000FFFF;
lkb              5585 fs/dlm/lock.c  	lkb->lkb_flags |= DLM_IFL_MSTCPY;
lkb              5586 fs/dlm/lock.c  	lkb->lkb_lvbseq = le32_to_cpu(rl->rl_lvbseq);
lkb              5587 fs/dlm/lock.c  	lkb->lkb_rqmode = rl->rl_rqmode;
lkb              5588 fs/dlm/lock.c  	lkb->lkb_grmode = rl->rl_grmode;
lkb              5591 fs/dlm/lock.c  	lkb->lkb_bastfn = (rl->rl_asts & DLM_CB_BAST) ? &fake_bastfn : NULL;
lkb              5592 fs/dlm/lock.c  	lkb->lkb_astfn = (rl->rl_asts & DLM_CB_CAST) ? &fake_astfn : NULL;
lkb              5594 fs/dlm/lock.c  	if (lkb->lkb_exflags & DLM_LKF_VALBLK) {
lkb              5599 fs/dlm/lock.c  		lkb->lkb_lvbptr = dlm_allocate_lvb(ls);
lkb              5600 fs/dlm/lock.c  		if (!lkb->lkb_lvbptr)
lkb              5602 fs/dlm/lock.c  		memcpy(lkb->lkb_lvbptr, rl->rl_lvb, lvblen);
lkb              5610 fs/dlm/lock.c  	    middle_conversion(lkb)) {
lkb              5612 fs/dlm/lock.c  		lkb->lkb_grmode = DLM_LOCK_IV;
lkb              5630 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5664 fs/dlm/lock.c  	lkb = search_remid(r, from_nodeid, remid);
lkb              5665 fs/dlm/lock.c  	if (lkb) {
lkb              5670 fs/dlm/lock.c  	error = create_lkb(ls, &lkb);
lkb              5674 fs/dlm/lock.c  	error = receive_rcom_lock_args(ls, lkb, r, rc);
lkb              5676 fs/dlm/lock.c  		__put_lkb(ls, lkb);
lkb              5680 fs/dlm/lock.c  	attach_lkb(r, lkb);
lkb              5681 fs/dlm/lock.c  	add_lkb(r, lkb, rl->rl_status);
lkb              5691 fs/dlm/lock.c  	rl->rl_remid = cpu_to_le32(lkb->lkb_id);
lkb              5693 fs/dlm/lock.c  	lkb->lkb_recover_seq = ls->ls_recover_seq;
lkb              5711 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5719 fs/dlm/lock.c  	error = find_lkb(ls, lkid, &lkb);
lkb              5726 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              5730 fs/dlm/lock.c  	if (!is_process_copy(lkb)) {
lkb              5736 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              5749 fs/dlm/lock.c  		dlm_send_rcom_lock(r, lkb);
lkb              5753 fs/dlm/lock.c  		lkb->lkb_remid = remid;
lkb              5766 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              5775 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5781 fs/dlm/lock.c  	error = create_lkb(ls, &lkb);
lkb              5791 fs/dlm/lock.c  			__put_lkb(ls, lkb);
lkb              5802 fs/dlm/lock.c  		__put_lkb(ls, lkb);
lkb              5809 fs/dlm/lock.c  	lkb->lkb_flags |= DLM_IFL_USER;
lkb              5810 fs/dlm/lock.c  	error = request_lock(ls, lkb, name, namelen, &args);
lkb              5822 fs/dlm/lock.c  		__put_lkb(ls, lkb);
lkb              5828 fs/dlm/lock.c  	hold_lkb(lkb);
lkb              5829 fs/dlm/lock.c  	list_add_tail(&lkb->lkb_ownqueue, &ua->proc->locks);
lkb              5840 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5847 fs/dlm/lock.c  	error = find_lkb(ls, lkid, &lkb);
lkb              5854 fs/dlm/lock.c  	ua = lkb->lkb_ua;
lkb              5878 fs/dlm/lock.c  	error = convert_lock(ls, lkb, &args);
lkb              5883 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              5900 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5907 fs/dlm/lock.c  	list_for_each_entry(lkb, &ls->ls_orphans, lkb_ownqueue) {
lkb              5908 fs/dlm/lock.c  		if (lkb->lkb_resource->res_length != namelen)
lkb              5910 fs/dlm/lock.c  		if (memcmp(lkb->lkb_resource->res_name, name, namelen))
lkb              5912 fs/dlm/lock.c  		if (lkb->lkb_grmode != mode) {
lkb              5918 fs/dlm/lock.c  		list_del_init(&lkb->lkb_ownqueue);
lkb              5919 fs/dlm/lock.c  		lkb->lkb_flags &= ~DLM_IFL_ORPHAN;
lkb              5920 fs/dlm/lock.c  		*lkid = lkb->lkb_id;
lkb              5935 fs/dlm/lock.c  	lkb->lkb_exflags = flags;
lkb              5936 fs/dlm/lock.c  	lkb->lkb_ownpid = (int) current->pid;
lkb              5938 fs/dlm/lock.c  	ua = lkb->lkb_ua;
lkb              5955 fs/dlm/lock.c  	list_add_tail(&lkb->lkb_ownqueue, &ua->proc->locks);
lkb              5965 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              5972 fs/dlm/lock.c  	error = find_lkb(ls, lkid, &lkb);
lkb              5976 fs/dlm/lock.c  	ua = lkb->lkb_ua;
lkb              5988 fs/dlm/lock.c  	error = unlock_lock(ls, lkb, &args);
lkb              6000 fs/dlm/lock.c  	if (!list_empty(&lkb->lkb_ownqueue))
lkb              6001 fs/dlm/lock.c  		list_move(&lkb->lkb_ownqueue, &ua->proc->unlocking);
lkb              6004 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              6014 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              6021 fs/dlm/lock.c  	error = find_lkb(ls, lkid, &lkb);
lkb              6025 fs/dlm/lock.c  	ua = lkb->lkb_ua;
lkb              6034 fs/dlm/lock.c  	error = cancel_lock(ls, lkb, &args);
lkb              6042 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              6051 fs/dlm/lock.c  	struct dlm_lkb *lkb;
lkb              6059 fs/dlm/lock.c  	error = find_lkb(ls, lkid, &lkb);
lkb              6063 fs/dlm/lock.c  	ua = lkb->lkb_ua;
lkb              6071 fs/dlm/lock.c  	r = lkb->lkb_resource;
lkb              6075 fs/dlm/lock.c  	error = validate_unlock_args(lkb, &args);
lkb              6078 fs/dlm/lock.c  	lkb->lkb_flags |= DLM_IFL_DEADLOCK_CANCEL;
lkb              6080 fs/dlm/lock.c  	error = _cancel_lock(r, lkb);
lkb              6091 fs/dlm/lock.c  	dlm_put_lkb(lkb);
lkb              6100 fs/dlm/lock.c  static int orphan_proc_lock(struct dlm_ls *ls, struct dlm_lkb *lkb)
lkb              6105 fs/dlm/lock.c  	hold_lkb(lkb); /* reference for the ls_orphans list */
lkb              6107 fs/dlm/lock.c  	list_add_tail(&lkb->lkb_ownqueue, &ls->ls_orphans);
lkb              6110 fs/dlm/lock.c  	set_unlock_args(0, lkb->lkb_ua, &args);
lkb              6112 fs/dlm/lock.c  	error = cancel_lock(ls, lkb, &args);
lkb              6123 fs/dlm/lock.c  static int unlock_proc_lock(struct dlm_ls *ls, struct dlm_lkb *lkb)
lkb              6129 fs/dlm/lock.c  			lkb->lkb_ua, &args);
lkb              6131 fs/dlm/lock.c  	error = unlock_lock(ls, lkb, &args);
lkb              6144 fs/dlm/lock.c  	struct dlm_lkb *lkb = NULL;
lkb              6150 fs/dlm/lock.c  	lkb = list_entry(proc->locks.next, struct dlm_lkb, lkb_ownqueue);
lkb              6151 fs/dlm/lock.c  	list_del_init(&lkb->lkb_ownqueue);
lkb              6153 fs/dlm/lock.c  	if (lkb->lkb_exflags & DLM_LKF_PERSISTENT)
lkb              6154 fs/dlm/lock.c  		lkb->lkb_flags |= DLM_IFL_ORPHAN;
lkb              6156 fs/dlm/lock.c  		lkb->lkb_flags |= DLM_IFL_DEAD;
lkb              6159 fs/dlm/lock.c  	return lkb;
lkb              6174 fs/dlm/lock.c  	struct dlm_lkb *lkb, *safe;
lkb              6179 fs/dlm/lock.c  		lkb = del_proc_lock(ls, proc);
lkb              6180 fs/dlm/lock.c  		if (!lkb)
lkb              6182 fs/dlm/lock.c  		del_timeout(lkb);
lkb              6183 fs/dlm/lock.c  		if (lkb->lkb_exflags & DLM_LKF_PERSISTENT)
lkb              6184 fs/dlm/lock.c  			orphan_proc_lock(ls, lkb);
lkb              6186 fs/dlm/lock.c  			unlock_proc_lock(ls, lkb);
lkb              6192 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              6198 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, safe, &proc->unlocking, lkb_ownqueue) {
lkb              6199 fs/dlm/lock.c  		list_del_init(&lkb->lkb_ownqueue);
lkb              6200 fs/dlm/lock.c  		lkb->lkb_flags |= DLM_IFL_DEAD;
lkb              6201 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              6204 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, safe, &proc->asts, lkb_cb_list) {
lkb              6205 fs/dlm/lock.c  		memset(&lkb->lkb_callbacks, 0,
lkb              6207 fs/dlm/lock.c  		list_del_init(&lkb->lkb_cb_list);
lkb              6208 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              6217 fs/dlm/lock.c  	struct dlm_lkb *lkb, *safe;
lkb              6220 fs/dlm/lock.c  		lkb = NULL;
lkb              6223 fs/dlm/lock.c  			lkb = list_entry(proc->locks.next, struct dlm_lkb,
lkb              6225 fs/dlm/lock.c  			list_del_init(&lkb->lkb_ownqueue);
lkb              6229 fs/dlm/lock.c  		if (!lkb)
lkb              6232 fs/dlm/lock.c  		lkb->lkb_flags |= DLM_IFL_DEAD;
lkb              6233 fs/dlm/lock.c  		unlock_proc_lock(ls, lkb);
lkb              6234 fs/dlm/lock.c  		dlm_put_lkb(lkb); /* ref from proc->locks list */
lkb              6238 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, safe, &proc->unlocking, lkb_ownqueue) {
lkb              6239 fs/dlm/lock.c  		list_del_init(&lkb->lkb_ownqueue);
lkb              6240 fs/dlm/lock.c  		lkb->lkb_flags |= DLM_IFL_DEAD;
lkb              6241 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              6246 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, safe, &proc->asts, lkb_cb_list) {
lkb              6247 fs/dlm/lock.c  		memset(&lkb->lkb_callbacks, 0,
lkb              6249 fs/dlm/lock.c  		list_del_init(&lkb->lkb_cb_list);
lkb              6250 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb              6259 fs/dlm/lock.c  	struct dlm_lkb *lkb, *safe;
lkb              6262 fs/dlm/lock.c  	list_for_each_entry_safe(lkb, safe, &ls->ls_orphans, lkb_ownqueue) {
lkb              6263 fs/dlm/lock.c  		if (pid && lkb->lkb_ownpid != pid)
lkb              6265 fs/dlm/lock.c  		unlock_proc_lock(ls, lkb);
lkb              6266 fs/dlm/lock.c  		list_del_init(&lkb->lkb_ownqueue);
lkb              6267 fs/dlm/lock.c  		dlm_put_lkb(lkb);
lkb                16 fs/dlm/lock.h  void dlm_print_lkb(struct dlm_lkb *lkb);
lkb                23 fs/dlm/lock.h  int dlm_put_lkb(struct dlm_lkb *lkb);
lkb               724 fs/dlm/lockspace.c 	struct dlm_lkb *lkb = p;
lkb               726 fs/dlm/lockspace.c 	return lkb->lkb_nodeid == 0 && lkb->lkb_grmode != DLM_LOCK_IV;
lkb               736 fs/dlm/lockspace.c 	struct dlm_lkb *lkb = p;
lkb               738 fs/dlm/lockspace.c 	if (lkb->lkb_lvbptr && lkb->lkb_flags & DLM_IFL_MSTCPY)
lkb               739 fs/dlm/lockspace.c 		dlm_free_lvb(lkb->lkb_lvbptr);
lkb               741 fs/dlm/lockspace.c 	dlm_free_lkb(lkb);
lkb                73 fs/dlm/memory.c 	struct dlm_lkb *lkb;
lkb                75 fs/dlm/memory.c 	lkb = kmem_cache_zalloc(lkb_cache, GFP_NOFS);
lkb                76 fs/dlm/memory.c 	return lkb;
lkb                79 fs/dlm/memory.c void dlm_free_lkb(struct dlm_lkb *lkb)
lkb                81 fs/dlm/memory.c 	if (lkb->lkb_flags & DLM_IFL_USER) {
lkb                83 fs/dlm/memory.c 		ua = lkb->lkb_ua;
lkb                89 fs/dlm/memory.c 	kmem_cache_free(lkb_cache, lkb);
lkb                91 fs/dlm/netlink.c static void fill_data(struct dlm_lock_data *data, struct dlm_lkb *lkb)
lkb                93 fs/dlm/netlink.c 	struct dlm_rsb *r = lkb->lkb_resource;
lkb                98 fs/dlm/netlink.c 	data->nodeid = lkb->lkb_nodeid;
lkb                99 fs/dlm/netlink.c 	data->ownpid = lkb->lkb_ownpid;
lkb               100 fs/dlm/netlink.c 	data->id = lkb->lkb_id;
lkb               101 fs/dlm/netlink.c 	data->remid = lkb->lkb_remid;
lkb               102 fs/dlm/netlink.c 	data->status = lkb->lkb_status;
lkb               103 fs/dlm/netlink.c 	data->grmode = lkb->lkb_grmode;
lkb               104 fs/dlm/netlink.c 	data->rqmode = lkb->lkb_rqmode;
lkb               105 fs/dlm/netlink.c 	if (lkb->lkb_ua)
lkb               106 fs/dlm/netlink.c 		data->xid = lkb->lkb_ua->xid;
lkb               114 fs/dlm/netlink.c void dlm_timeout_warn(struct dlm_lkb *lkb)
lkb               134 fs/dlm/netlink.c 	fill_data(data, lkb);
lkb               373 fs/dlm/rcom.c  static void pack_rcom_lock(struct dlm_rsb *r, struct dlm_lkb *lkb,
lkb               378 fs/dlm/rcom.c  	rl->rl_ownpid = cpu_to_le32(lkb->lkb_ownpid);
lkb               379 fs/dlm/rcom.c  	rl->rl_lkid = cpu_to_le32(lkb->lkb_id);
lkb               380 fs/dlm/rcom.c  	rl->rl_exflags = cpu_to_le32(lkb->lkb_exflags);
lkb               381 fs/dlm/rcom.c  	rl->rl_flags = cpu_to_le32(lkb->lkb_flags);
lkb               382 fs/dlm/rcom.c  	rl->rl_lvbseq = cpu_to_le32(lkb->lkb_lvbseq);
lkb               383 fs/dlm/rcom.c  	rl->rl_rqmode = lkb->lkb_rqmode;
lkb               384 fs/dlm/rcom.c  	rl->rl_grmode = lkb->lkb_grmode;
lkb               385 fs/dlm/rcom.c  	rl->rl_status = lkb->lkb_status;
lkb               386 fs/dlm/rcom.c  	rl->rl_wait_type = cpu_to_le16(lkb->lkb_wait_type);
lkb               388 fs/dlm/rcom.c  	if (lkb->lkb_bastfn)
lkb               390 fs/dlm/rcom.c  	if (lkb->lkb_astfn)
lkb               399 fs/dlm/rcom.c  	if (lkb->lkb_lvbptr)
lkb               400 fs/dlm/rcom.c  		memcpy(rl->rl_lvb, lkb->lkb_lvbptr, r->res_ls->ls_lvblen);
lkb               403 fs/dlm/rcom.c  int dlm_send_rcom_lock(struct dlm_rsb *r, struct dlm_lkb *lkb)
lkb               411 fs/dlm/rcom.c  	if (lkb->lkb_lvbptr)
lkb               419 fs/dlm/rcom.c  	pack_rcom_lock(r, lkb, rl);
lkb                18 fs/dlm/rcom.h  int dlm_send_rcom_lock(struct dlm_rsb *r, struct dlm_lkb *lkb);
lkb               403 fs/dlm/recover.c 	struct dlm_lkb *lkb;
lkb               405 fs/dlm/recover.c 	list_for_each_entry(lkb, queue, lkb_statequeue) {
lkb               406 fs/dlm/recover.c 		if (!(lkb->lkb_flags & DLM_IFL_MSTCPY)) {
lkb               407 fs/dlm/recover.c 			lkb->lkb_nodeid = nodeid;
lkb               408 fs/dlm/recover.c 			lkb->lkb_remid = 0;
lkb               619 fs/dlm/recover.c 	struct dlm_lkb *lkb;
lkb               622 fs/dlm/recover.c 	list_for_each_entry(lkb, head, lkb_statequeue) {
lkb               623 fs/dlm/recover.c 	   	error = dlm_send_rcom_lock(r, lkb);
lkb               735 fs/dlm/recover.c 	struct dlm_lkb *lkb, *high_lkb = NULL;
lkb               754 fs/dlm/recover.c 	list_for_each_entry(lkb, &r->res_grantqueue, lkb_statequeue) {
lkb               755 fs/dlm/recover.c 		if (!(lkb->lkb_exflags & DLM_LKF_VALBLK))
lkb               760 fs/dlm/recover.c 		if (lkb->lkb_grmode > DLM_LOCK_CR) {
lkb               765 fs/dlm/recover.c 		if (((int)lkb->lkb_lvbseq - (int)high_seq) >= 0) {
lkb               766 fs/dlm/recover.c 			high_lkb = lkb;
lkb               767 fs/dlm/recover.c 			high_seq = lkb->lkb_lvbseq;
lkb               771 fs/dlm/recover.c 	list_for_each_entry(lkb, &r->res_convertqueue, lkb_statequeue) {
lkb               772 fs/dlm/recover.c 		if (!(lkb->lkb_exflags & DLM_LKF_VALBLK))
lkb               777 fs/dlm/recover.c 		if (lkb->lkb_grmode > DLM_LOCK_CR) {
lkb               782 fs/dlm/recover.c 		if (((int)lkb->lkb_lvbseq - (int)high_seq) >= 0) {
lkb               783 fs/dlm/recover.c 			high_lkb = lkb;
lkb               784 fs/dlm/recover.c 			high_seq = lkb->lkb_lvbseq;
lkb               803 fs/dlm/recover.c 		r->res_lvbseq = lkb->lkb_lvbseq;
lkb               804 fs/dlm/recover.c 		memcpy(r->res_lvbptr, lkb->lkb_lvbptr, lvblen);
lkb               822 fs/dlm/recover.c 	struct dlm_lkb *lkb;
lkb               825 fs/dlm/recover.c 	list_for_each_entry(lkb, &r->res_grantqueue, lkb_statequeue) {
lkb               826 fs/dlm/recover.c 		if (lkb->lkb_grmode == DLM_LOCK_PR ||
lkb               827 fs/dlm/recover.c 		    lkb->lkb_grmode == DLM_LOCK_CW) {
lkb               828 fs/dlm/recover.c 			grmode = lkb->lkb_grmode;
lkb               833 fs/dlm/recover.c 	list_for_each_entry(lkb, &r->res_convertqueue, lkb_statequeue) {
lkb               834 fs/dlm/recover.c 		if (lkb->lkb_grmode != DLM_LOCK_IV)
lkb               838 fs/dlm/recover.c 				  lkb->lkb_id, lkb->lkb_rqmode);
lkb               839 fs/dlm/recover.c 			lkb->lkb_grmode = lkb->lkb_rqmode;
lkb               842 fs/dlm/recover.c 				  lkb->lkb_id, grmode);
lkb               843 fs/dlm/recover.c 			lkb->lkb_grmode = grmode;
lkb               175 fs/dlm/user.c  void dlm_user_add_ast(struct dlm_lkb *lkb, uint32_t flags, int mode,
lkb               183 fs/dlm/user.c  	if (lkb->lkb_flags & (DLM_IFL_ORPHAN | DLM_IFL_DEAD))
lkb               186 fs/dlm/user.c  	ls = lkb->lkb_resource->res_ls;
lkb               195 fs/dlm/user.c  	if (lkb->lkb_flags & (DLM_IFL_ORPHAN | DLM_IFL_DEAD))
lkb               198 fs/dlm/user.c  	DLM_ASSERT(lkb->lkb_ua, dlm_print_lkb(lkb););
lkb               199 fs/dlm/user.c  	ua = lkb->lkb_ua;
lkb               206 fs/dlm/user.c  		lkb->lkb_flags |= DLM_IFL_ENDOFLIFE;
lkb               210 fs/dlm/user.c  	rv = dlm_add_lkb_callback(lkb, flags, mode, status, sbflags, seq);
lkb               216 fs/dlm/user.c  	if (list_empty(&lkb->lkb_cb_list)) {
lkb               217 fs/dlm/user.c  		kref_get(&lkb->lkb_ref);
lkb               218 fs/dlm/user.c  		list_add_tail(&lkb->lkb_cb_list, &proc->asts);
lkb               223 fs/dlm/user.c  	if (lkb->lkb_flags & DLM_IFL_ENDOFLIFE) {
lkb               226 fs/dlm/user.c  		if (!list_empty(&lkb->lkb_ownqueue)) {
lkb               227 fs/dlm/user.c  			list_del_init(&lkb->lkb_ownqueue);
lkb               228 fs/dlm/user.c  			dlm_put_lkb(lkb);
lkb               780 fs/dlm/user.c  	struct dlm_lkb *lkb;
lkb               839 fs/dlm/user.c  	lkb = list_entry(proc->asts.next, struct dlm_lkb, lkb_cb_list);
lkb               842 fs/dlm/user.c  	old_mode = lkb->lkb_last_cast.mode;
lkb               844 fs/dlm/user.c  	rv = dlm_rem_lkb_callback(lkb->lkb_resource->res_ls, lkb, &cb, &resid);
lkb               848 fs/dlm/user.c  		log_print("dlm_rem_lkb_callback empty %x", lkb->lkb_id);
lkb               849 fs/dlm/user.c  		list_del_init(&lkb->lkb_cb_list);
lkb               852 fs/dlm/user.c  		dlm_put_lkb(lkb);
lkb               856 fs/dlm/user.c  		list_del_init(&lkb->lkb_cb_list);
lkb               862 fs/dlm/user.c  			dlm_put_lkb(lkb);
lkb               869 fs/dlm/user.c  		if (!cb.sb_status && lkb->lkb_lksb->sb_lvbptr &&
lkb               873 fs/dlm/user.c  		lkb->lkb_lksb->sb_status = cb.sb_status;
lkb               874 fs/dlm/user.c  		lkb->lkb_lksb->sb_flags = cb.sb_flags;
lkb               877 fs/dlm/user.c  	rv = copy_result_to_user(lkb->lkb_ua,
lkb               883 fs/dlm/user.c  		dlm_put_lkb(lkb);
lkb                 9 fs/dlm/user.h  void dlm_user_add_ast(struct dlm_lkb *lkb, uint32_t flags, int mode,