EXPORT_SYMBOL(it_open_error);
/* this must be called on a lockh that is known to have a referenced lock */
-int mdc_set_lock_data(struct obd_export *exp, __u64 *lockh, void *data)
+int mdc_set_lock_data(struct obd_export *exp, __u64 *lockh, void *data,
+ __u32 *bits)
{
struct ldlm_lock *lock;
ENTRY;
+ if(bits)
+ *bits = 0;
+
if (!*lockh) {
EXIT;
RETURN(0);
}
#endif
lock->l_ast_data = data;
+ if (bits)
+ *bits = lock->l_policy_data.l_inodebits.bits;
+
unlock_res_and_lock(lock);
LDLM_LOCK_PUT(lock);
struct ptlrpc_request *req;
struct obd_device *obddev = class_exp2obd(exp);
struct ldlm_intent *lit;
- int joinfile = !!((it->it_flags & O_JOIN_FILE) &&
- op_data->op_data);
+ int joinfile = !!((it->it_create_mode & M_JOIN_FILE) &&
+ op_data->op_data);
CFS_LIST_HEAD(cancels);
int count = 0;
int mode;
}
spin_lock(&req->rq_lock);
- req->rq_replay = 1;
+ req->rq_replay = req->rq_import->imp_replayable;
spin_unlock(&req->rq_lock);
/* pack the intent */
policy = *(ldlm_policy_data_t *)lmm;
res_id.name[3] = LDLM_FLOCK;
} else if (it->it_op & IT_OPEN) {
- int joinfile = !!((it->it_flags & O_JOIN_FILE) &&
+ int joinfile = !!((it->it_create_mode & M_JOIN_FILE) &&
op_data->op_data);
req = mdc_intent_open_pack(exp, it, op_data, lmm, lmmsize,
einfo->ei_cbdata = NULL;
lmm = NULL;
} else
- it->it_flags &= ~O_JOIN_FILE;
+ it->it_create_mode &= ~M_JOIN_FILE;
} else if (it->it_op & IT_UNLINK)
req = mdc_intent_unlink_pack(exp, it, op_data);
else if (it->it_op & (IT_GETATTR | IT_LOOKUP))
/* If we were revalidating a fid/name pair, mark the intent in
* case we fail and get called again from lookup */
if (fid_is_sane(&op_data->op_fid2) &&
- it->it_flags & O_CHECK_STALE &&
+ it->it_create_mode & M_CHECK_STALE &&
it->it_op != IT_GETATTR) {
it_set_disposition(it, DISP_ENQ_COMPLETE);
if (rc < 0)
RETURN(rc);
} else if (!fid_is_sane(&op_data->op_fid2) ||
- !(it->it_flags & O_CHECK_STALE)) {
+ !(it->it_create_mode & M_CHECK_STALE)) {
/* DISP_ENQ_COMPLETE set means there is extra reference on
* request referenced from this intent, saved for subsequent
* lookup. This path is executed when we proceed to this