int rc;
int verify;
int gfp_mask;
+ int brw_flags = 0;
ENTRY;
verify = ((oa->o_id) != ECHO_PERSISTENT_OBJID &&
/* XXX think again with misaligned I/O */
npages = count >> CFS_PAGE_SHIFT;
+ if (rw == OBD_BRW_WRITE)
+ brw_flags = OBD_BRW_ASYNC;
+
OBD_ALLOC(pga, npages * sizeof(*pga));
if (pga == NULL)
RETURN(-ENOMEM);
pages[i] = pgp->pg;
pgp->count = CFS_PAGE_SIZE;
pgp->off = off;
- pgp->flag = 0;
+ pgp->flag = brw_flags;
if (verify)
echo_client_page_debug_setup(lsm, pgp->pg, rw,
struct obd_device *obd = class_exp2obd(exp);
struct echo_device *ed = obd2echo_dev(obd);
struct echo_client_obd *ec = ed->ed_ec;
- struct obd_trans_info dummy_oti = { .oti_thread = NULL };
+ struct obd_trans_info dummy_oti = { 0 };
struct obdo *oa = &data->ioc_obdo1;
struct echo_object *eco;
int rc;
struct obd_trans_info dummy_oti;
struct oti_req_ack_lock *ack_lock;
struct obdo *oa;
+ struct lu_fid fid;
int rw = OBD_BRW_READ;
int rc = 0;
int i;
oa->o_valid |= OBD_MD_FLGROUP;
oa->o_seq = FID_SEQ_ECHO;
}
- /* assume we can touch filter native objects with echo device. */
- /* LASSERT(oa->o_seq == FID_SEQ_ECHO); */
+
+ /* This FID is unpacked just for validation at this point */
+ rc = fid_ostid_unpack(&fid, &oa->o_oi, 0);
+ if (rc < 0)
+ RETURN(rc);
switch (cmd) {
case OBD_IOC_CREATE: /* may create echo object */