struct obdo *oa;
struct ost_lvb *lvb;
u64 flags = attr->cra_flags;
+ struct osc_page *opg;
- oinfo = cl2osc(obj)->oo_oinfo;
- lvb = &oinfo->loi_lvb;
- oa = attr->cra_oa;
+ oinfo = cl2osc(obj)->oo_oinfo;
+ lvb = &oinfo->loi_lvb;
+ oa = attr->cra_oa;
+ opg = osc_cl_page_osc(attr->cra_page, cl2osc(obj));
if ((flags & OBD_MD_FLMTIME) != 0) {
oa->o_mtime = lvb->lvb_mtime;
}
oa->o_valid |= OBD_MD_FLID;
}
- if (flags & OBD_MD_FLHANDLE) {
+ /* if srvlock is set, don't look for a local lock, since we won't use
+ * it and shouldn't note it in the RPC
+ */
+ if (flags & OBD_MD_FLHANDLE && !opg->ops_srvlock) {
struct ldlm_lock *lock;
- struct osc_page *opg;
- opg = osc_cl_page_osc(attr->cra_page, cl2osc(obj));
lock = osc_dlmlock_at_pgoff(env, cl2osc(obj), osc_index(opg),
OSC_DAP_FL_TEST_LOCK | OSC_DAP_FL_CANCELING);
- if (lock == NULL && !opg->ops_srvlock) {
+ if (lock == NULL) {
struct ldlm_resource *res;
struct ldlm_res_id *resname;
LBUG();
}
- /* check for lockless io. */
- if (lock != NULL) {
- oa->o_handle = lock->l_remote_handle;
- oa->o_valid |= OBD_MD_FLHANDLE;
- LDLM_LOCK_PUT(lock);
- }
+ oa->o_handle = lock->l_remote_handle;
+ oa->o_valid |= OBD_MD_FLHANDLE;
+ LDLM_LOCK_PUT(lock);
}
}