+
+void _ldlm_lock_debug(struct ldlm_lock *lock, __u32 level,
+ struct libcfs_debug_msg_data *data, const char *fmt,
+ ...)
+{
+ va_list args;
+ cfs_debug_limit_state_t *cdls = data->msg_cdls;
+
+ va_start(args, fmt);
+
+ if (lock->l_resource == NULL) {
+ libcfs_debug_vmsg2(cdls, data->msg_subsys, level, data->msg_file,
+ data->msg_fn, data->msg_line, fmt, args,
+ " ns: \?\? lock: %p/"LPX64" lrc: %d/%d,%d mode: %s/%s "
+ "res: \?\? rrc=\?\? type: \?\?\? flags: %x remote: "
+ LPX64" expref: %d pid: %u\n", lock,
+ lock->l_handle.h_cookie, atomic_read(&lock->l_refc),
+ lock->l_readers, lock->l_writers,
+ ldlm_lockname[lock->l_granted_mode],
+ ldlm_lockname[lock->l_req_mode],
+ lock->l_flags, lock->l_remote_handle.cookie,
+ lock->l_export ?
+ atomic_read(&lock->l_export->exp_refcount) : -99,
+ lock->l_pid);
+ va_end(args);
+ return;
+ }
+
+ switch (lock->l_resource->lr_type) {
+ case LDLM_EXTENT:
+ libcfs_debug_vmsg2(cdls, data->msg_subsys, level, data->msg_file,
+ data->msg_fn, data->msg_line, fmt, args,
+ " ns: %s lock: %p/"LPX64" lrc: %d/%d,%d mode: %s/%s "
+ "res: "LPU64"/"LPU64" rrc: %d type: %s ["LPU64"->"LPU64
+ "] (req "LPU64"->"LPU64") flags: %x remote: "LPX64
+ " expref: %d pid: %u\n",
+ lock->l_resource->lr_namespace->ns_name, lock,
+ lock->l_handle.h_cookie, atomic_read(&lock->l_refc),
+ lock->l_readers, lock->l_writers,
+ ldlm_lockname[lock->l_granted_mode],
+ ldlm_lockname[lock->l_req_mode],
+ lock->l_resource->lr_name.name[0],
+ lock->l_resource->lr_name.name[1],
+ atomic_read(&lock->l_resource->lr_refcount),
+ ldlm_typename[lock->l_resource->lr_type],
+ lock->l_policy_data.l_extent.start,
+ lock->l_policy_data.l_extent.end,
+ lock->l_req_extent.start, lock->l_req_extent.end,
+ lock->l_flags, lock->l_remote_handle.cookie,
+ lock->l_export ?
+ atomic_read(&lock->l_export->exp_refcount) : -99,
+ lock->l_pid);
+ break;
+
+ case LDLM_FLOCK:
+ libcfs_debug_vmsg2(cdls, data->msg_subsys, level, data->msg_file,
+ data->msg_fn, data->msg_line, fmt, args,
+ " ns: %s lock: %p/"LPX64" lrc: %d/%d,%d mode: %s/%s "
+ "res: "LPU64"/"LPU64" rrc: %d type: %s pid: %d "
+ "["LPU64"->"LPU64"] flags: %x remote: "LPX64
+ " expref: %d pid: %u\n",
+ lock->l_resource->lr_namespace->ns_name, lock,
+ lock->l_handle.h_cookie, atomic_read(&lock->l_refc),
+ lock->l_readers, lock->l_writers,
+ ldlm_lockname[lock->l_granted_mode],
+ ldlm_lockname[lock->l_req_mode],
+ lock->l_resource->lr_name.name[0],
+ lock->l_resource->lr_name.name[1],
+ atomic_read(&lock->l_resource->lr_refcount),
+ ldlm_typename[lock->l_resource->lr_type],
+ lock->l_policy_data.l_flock.pid,
+ lock->l_policy_data.l_flock.start,
+ lock->l_policy_data.l_flock.end,
+ lock->l_flags, lock->l_remote_handle.cookie,
+ lock->l_export ?
+ atomic_read(&lock->l_export->exp_refcount) : -99,
+ lock->l_pid);
+ break;
+
+ case LDLM_IBITS:
+ libcfs_debug_vmsg2(cdls, data->msg_subsys, level, data->msg_file,
+ data->msg_fn, data->msg_line, fmt, args,
+ " ns: %s lock: %p/"LPX64" lrc: %d/%d,%d mode: %s/%s "
+ "res: "LPU64"/"LPU64" bits "LPX64" rrc: %d type: %s "
+ "flags: %x remote: "LPX64" expref: %d "
+ "pid %u\n",
+ lock->l_resource->lr_namespace->ns_name,
+ lock, lock->l_handle.h_cookie,
+ atomic_read (&lock->l_refc),
+ lock->l_readers, lock->l_writers,
+ ldlm_lockname[lock->l_granted_mode],
+ ldlm_lockname[lock->l_req_mode],
+ lock->l_resource->lr_name.name[0],
+ lock->l_resource->lr_name.name[1],
+ lock->l_policy_data.l_inodebits.bits,
+ atomic_read(&lock->l_resource->lr_refcount),
+ ldlm_typename[lock->l_resource->lr_type],
+ lock->l_flags, lock->l_remote_handle.cookie,
+ lock->l_export ?
+ atomic_read(&lock->l_export->exp_refcount) : -99,
+ lock->l_pid);
+ break;
+
+ default:
+ libcfs_debug_vmsg2(cdls, data->msg_subsys, level, data->msg_file,
+ data->msg_fn, data->msg_line, fmt, args,
+ " ns: %s lock: %p/"LPX64" lrc: %d/%d,%d mode: %s/%s "
+ "res: "LPU64"/"LPU64" rrc: %d type: %s flags: %x "
+ "remote: "LPX64" expref: %d pid: %u\n",
+ lock->l_resource->lr_namespace->ns_name,
+ lock, lock->l_handle.h_cookie,
+ atomic_read (&lock->l_refc),
+ lock->l_readers, lock->l_writers,
+ ldlm_lockname[lock->l_granted_mode],
+ ldlm_lockname[lock->l_req_mode],
+ lock->l_resource->lr_name.name[0],
+ lock->l_resource->lr_name.name[1],
+ atomic_read(&lock->l_resource->lr_refcount),
+ ldlm_typename[lock->l_resource->lr_type],
+ lock->l_flags, lock->l_remote_handle.cookie,
+ lock->l_export ?
+ atomic_read(&lock->l_export->exp_refcount) : -99,
+ lock->l_pid);
+ break;
+ }
+ va_end(args);
+}
+EXPORT_SYMBOL(_ldlm_lock_debug);