typedef int (*ldlm_res_compat)(struct ldlm_lock *child, struct ldlm_lock *new);
typedef int (*ldlm_res_policy)(struct ldlm_lock *lock, void *req_cookie,
- ldlm_mode_t mode, void *data);
+ ldlm_mode_t mode, int flags, void *data);
#define LDLM_PLAIN 10
#define LDLM_EXTENT 11
/* ldlm_extent.c */
int ldlm_extent_compat(struct ldlm_lock *, struct ldlm_lock *);
-int ldlm_extent_policy(struct ldlm_lock *, void *, ldlm_mode_t, void *);
+int ldlm_extent_policy(struct ldlm_lock *, void *, ldlm_mode_t, int flags,
+ void *);
/* ldlm_lockd.c */
int ldlm_handle_enqueue(struct ptlrpc_request *req);
/* ldlm_lock.c */
void ldlm_register_intent(int (*arg)(struct ldlm_lock *lock, void *req_cookie,
- ldlm_mode_t mode, void *data));
+ ldlm_mode_t mode, int flags, void *data));
void ldlm_unregister_intent(void);
void ldlm_lock2handle(struct ldlm_lock *lock, struct lustre_handle *lockh);
struct ldlm_lock *__ldlm_handle2lock(struct lustre_handle *, int strict);
/* apply the internal policy by walking all the lists */
int ldlm_extent_policy(struct ldlm_lock *lock, void *req_cookie,
- ldlm_mode_t mode, void *data)
+ ldlm_mode_t mode, int flags, void *data)
{
struct ldlm_resource *res = lock->l_resource;
struct ldlm_extent *req_ex = req_cookie;
};
void ldlm_register_intent(int (*arg) (struct ldlm_lock * lock, void *req_cookie,
- ldlm_mode_t mode, void *data))
+ ldlm_mode_t mode, int flags, void *data))
{
ldlm_res_policy_table[LDLM_MDSINTENT] = arg;
}
if (!local && !(*flags & LDLM_FL_REPLAY) &&
(policy = ldlm_res_policy_table[res->lr_type])) {
int rc;
- rc = policy(lock, cookie, lock->l_req_mode, NULL);
+ rc = policy(lock, cookie, lock->l_req_mode, *flags, NULL);
if (rc == ELDLM_LOCK_CHANGED) {
res = lock->l_resource;
}
static int ldlm_intent_policy(struct ldlm_lock *lock, void *req_cookie,
- ldlm_mode_t mode, void *data)
+ ldlm_mode_t mode, int flags, void *data)
{
struct ptlrpc_request *req = req_cookie;
int rc = 0;