- if (lock != NULL) {
- olck = osc_lock_at(lock);
- LASSERT(olck != NULL);
- /* check for lockless io. */
- if (olck->ols_lock != NULL) {
- oa->o_handle = olck->ols_lock->l_remote_handle;
- oa->o_valid |= OBD_MD_FLHANDLE;
- }
- cl_lock_put(env, lock);
- } else {
- /* Should only be possible with liblustre */
- LASSERT(LIBLUSTRE_CLIENT);
+ if (lock == NULL) {
+ struct cl_object_header *head;
+ struct cl_lock *scan;
+
+ head = cl_object_header(apage->cp_obj);
+ list_for_each_entry(scan, &head->coh_locks, cll_linkage)
+ CL_LOCK_DEBUG(D_ERROR, env, scan,
+ "no cover page!\n");
+ CL_PAGE_DEBUG(D_ERROR, env, apage,
+ "dump uncover page!\n");
+ libcfs_debug_dumpstack(NULL);
+ LBUG();
+ }
+
+ olck = osc_lock_at(lock);
+ LASSERT(olck != NULL);
+ LASSERT(ergo(opg->ops_srvlock, olck->ols_lock == NULL));
+ /* check for lockless io. */
+ if (olck->ols_lock != NULL) {
+ oa->o_handle = olck->ols_lock->l_remote_handle;
+ oa->o_valid |= OBD_MD_FLHANDLE;