__u32 repsize[3] = { [MSG_PTLRPC_BODY_OFF] = sizeof(struct ptlrpc_body),
[DLM_LOCKREPLY_OFF] = sizeof(*rep),
[DLM_REPLY_REC_OFF] = sizeof(*reply_lvb) };
+ struct ldlm_glimpse_work gl_work;
+ CFS_LIST_HEAD(gl_list);
ENTRY;
policy = ldlm_get_processing_policy(res);
}
LASSERTF(l->l_glimpse_ast != NULL, "l == %p", l);
- rc = l->l_glimpse_ast(l, NULL); /* this will update the LVB */
+
+ /* Populate the gl_work structure.
+ * Grab additional reference on the lock which will be released in
+ * ldlm_work_gl_ast_lock() */
+ gl_work.gl_lock = LDLM_LOCK_GET(l);
+ /* The glimpse callback is sent to one single extent lock. As a result,
+ * the gl_work list is just composed of one element */
+ cfs_list_add_tail(&gl_work.gl_list, &gl_list);
+ /* the ldlm_glimpse_work structure is allocated on the stack */
+ gl_work.gl_flags = LDLM_GL_WORK_NOFREE;
+
+ rc = ldlm_glimpse_locks(res, &gl_list); /* this will update the LVB */
+
+ if (!cfs_list_empty(&gl_list))
+ LDLM_LOCK_RELEASE(l);
lock_res(res);
*reply_lvb = *res_lvb;
lcfg bufs 1, 2, 4 (device, fstype, mount opts) are ignored.*/
struct lustre_sb_info *lsi = s2lsi(lmi->lmi_sb);
mnt = lmi->lmi_mnt;
- obd->obd_fsops = fsfilt_get_ops(MT_STR(lsi->lsi_ldd));
+ obd->obd_fsops = fsfilt_get_ops(lsi->lsi_fstype);
} else {
/* old path - used by lctl */
CERROR("Using old MDS mount method\n");
}
fcc = &oa->o_lcookie;
ctxt = llog_group_get_ctxt(olg, fcc->lgc_subsys + 1);
- llog_cancel(ctxt, NULL, 1, fcc, 0);
+ llog_cancel(NULL, ctxt, NULL, 1, fcc, 0);
llog_ctxt_put(ctxt);
fcc = NULL; /* we didn't allocate fcc, don't free it */
}