X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flinux%2Flustre_dlm.h;h=6ace0067298c80126141290d86c6e9844ac736bb;hb=b437c99b6cd7eee79ad0a16a6f34f693709e5477;hp=00393ddab674c06e814eb0a66bb0ced939236284;hpb=cc4b70974d3fb462a1d58fc6c789c9e226188841;p=fs%2Flustre-release.git diff --git a/lustre/include/linux/lustre_dlm.h b/lustre/include/linux/lustre_dlm.h index 00393dd..6ace006 100644 --- a/lustre/include/linux/lustre_dlm.h +++ b/lustre/include/linux/lustre_dlm.h @@ -32,7 +32,7 @@ typedef enum { #define LDLM_FL_BLOCK_WAIT (1 << 3) #define LDLM_FL_CBPENDING (1 << 4) #define LDLM_FL_AST_SENT (1 << 5) -#define LDLM_FL_DESTROYED (1 << 6) +#define LDLM_FL_DESTROYED (1 << 6) #define L2B(c) (1 << c) @@ -100,9 +100,9 @@ struct ldlm_namespace { struct ldlm_lock; -typedef int (*ldlm_lock_callback)(struct ldlm_lock *lock, +typedef int (*ldlm_lock_callback)(struct lustre_handle *lockh, struct ldlm_lock_desc *new, void *data, - __u32 data_len, struct ptlrpc_request **req); + __u32 data_len); struct ldlm_lock { __u64 l_random; @@ -174,6 +174,15 @@ struct ldlm_resource { void *lr_tmp; }; +struct ldlm_ast_work { + struct ldlm_lock *w_lock; + int w_blocking; + struct ldlm_lock_desc w_desc; + struct list_head w_list; + void *w_data; + int w_datalen; +}; + static inline struct ldlm_extent *ldlm_res2extent(struct ldlm_resource *res) { return (struct ldlm_extent *)(res->lr_name); @@ -181,16 +190,21 @@ static inline struct ldlm_extent *ldlm_res2extent(struct ldlm_resource *res) extern struct obd_ops ldlm_obd_ops; + +extern char *ldlm_lockname[]; +extern char *ldlm_typename[]; + #define LDLM_DEBUG(lock, format, a...) \ do { \ CDEBUG(D_DLMTRACE, "### " format \ - " (%s: lock %p mode %d/%d on res %Lu (rc %d) " \ - " type %d remote %Lx)\n" , ## a, \ + " (%s: lock %p mode %s/%s on res %Lu (rc %d) " \ + " type %s remote %Lx)\n" , ## a, \ lock->l_resource->lr_namespace->ns_name, lock, \ - lock->l_granted_mode, lock->l_req_mode, \ + ldlm_lockname[lock->l_granted_mode], \ + ldlm_lockname[lock->l_req_mode], \ lock->l_resource->lr_name[0], \ atomic_read(&lock->l_resource->lr_refcount), \ - lock->l_resource->lr_type, \ + ldlm_typename[lock->l_resource->lr_type], \ lock->l_remote_handle.addr); \ } while (0) @@ -202,16 +216,19 @@ int ldlm_extent_compat(struct ldlm_lock *, struct ldlm_lock *); int ldlm_extent_policy(struct ldlm_lock *, void *, ldlm_mode_t, void *); /* ldlm_lock.c */ +void ldlm_lock2handle(struct ldlm_lock *lock, struct lustre_handle *lockh); struct ldlm_lock *ldlm_handle2lock(struct lustre_handle *handle); +void ldlm_lock2handle(struct ldlm_lock *lock, struct lustre_handle *lockh); void ldlm_lock_put(struct ldlm_lock *lock); -void ldlm_lock_free(struct ldlm_lock *lock); +void ldlm_lock_destroy(struct ldlm_lock *lock); void ldlm_lock2desc(struct ldlm_lock *lock, struct ldlm_lock_desc *desc); -void ldlm_lock_addref(struct ldlm_lock *lock, __u32 mode); -void ldlm_lock_decref(struct ldlm_lock *lock, __u32 mode); +void ldlm_lock_addref(struct lustre_handle *lockh, __u32 mode); +void ldlm_lock_addref_internal(struct ldlm_lock* , __u32 mode); +void ldlm_lock_decref(struct lustre_handle *lockh, __u32 mode); void ldlm_grant_lock(struct ldlm_lock *lock); -int ldlm_match(struct ldlm_namespace *ns, __u64 *res_id, __u32 type, - void *cookie, int cookielen, ldlm_mode_t mode, - struct lustre_handle *lockh); +int ldlm_lock_match(struct ldlm_namespace *ns, __u64 *res_id, __u32 type, + void *cookie, int cookielen, ldlm_mode_t mode, + struct lustre_handle *lockh); struct ldlm_lock * ldlm_lock_create(struct ldlm_namespace *ns, struct lustre_handle *parent_lock_handle, @@ -224,6 +241,7 @@ ldlm_error_t ldlm_lock_enqueue(struct ldlm_lock *lock, void *cookie, struct ldlm_resource *ldlm_lock_convert(struct ldlm_lock *lock, int new_mode, int *flags); void ldlm_lock_cancel(struct ldlm_lock *lock); +void ldlm_run_ast_work(struct list_head *rpc_list); void ldlm_reprocess_all(struct ldlm_resource *res); void ldlm_lock_dump(struct ldlm_lock *lock); @@ -262,11 +280,11 @@ int ldlm_cli_enqueue(struct ptlrpc_client *cl, void *data, __u32 data_len, struct lustre_handle *lockh); -int ldlm_cli_callback(struct ldlm_lock *lock, struct ldlm_lock *new, - void *data, __u32 data_len, struct ptlrpc_request **reqp); +int ldlm_server_ast(struct lustre_handle *lockh, struct ldlm_lock_desc *new, + void *data, __u32 data_len); int ldlm_cli_convert(struct ptlrpc_client *, struct lustre_handle *, int new_mode, int *flags); -int ldlm_cli_cancel(struct ptlrpc_client *, struct ldlm_lock *); +int ldlm_cli_cancel(struct lustre_handle *); #endif /* __KERNEL__ */