#define OBD_BRW_READ 0x01
#define OBD_BRW_WRITE 0x02
#define OBD_BRW_RWMASK (OBD_BRW_READ | OBD_BRW_WRITE)
-#define OBD_BRW_SYNC 0x08
+#define OBD_BRW_SYNC 0x08 /* this page is a part of synchronous
+ * transfer and is not accounted in
+ * the grant. */
#define OBD_BRW_CHECK 0x10
#define OBD_BRW_FROM_GRANT 0x20 /* the osc manages this under llite */
#define OBD_BRW_GRANTED 0x40 /* the ost manages this */
{
struct osc_object *obj;
+ LINVRNT(cl_page_is_vmlocked(env, opg->ops_cl.cpl_page));
+
obj = cl2osc(opg->ops_cl.cpl_obj);
spin_lock(&obj->oo_seatbelt);
list_add(&opg->ops_inflight, &obj->oo_inflight[crt]);
enum cl_req_type crt;
LINVRNT(osc_page_protected(env, opg, CLM_READ, 1));
+ LINVRNT(cl_page_is_vmlocked(env, page));
ENTRY;
return ERR_PTR(result);
}
+/**
+ * Helper function called by osc_io_submit() for every page in an immediate
+ * transfer (i.e., transferred synchronously).
+ */
void osc_io_submit_page(const struct lu_env *env,
struct osc_io *oio, struct osc_page *opg,
enum cl_req_type crt)
static inline int can_merge_pages(struct brw_page *p1, struct brw_page *p2)
{
if (p1->flag != p2->flag) {
- unsigned mask = ~(OBD_BRW_FROM_GRANT|OBD_BRW_NOCACHE);
+ unsigned mask = ~(OBD_BRW_FROM_GRANT|
+ OBD_BRW_NOCACHE|OBD_BRW_SYNC);
/* warn if we try to combine flags that we don't know to be
* safe to combine */