}
static int echo_getattr(const struct lu_env *env, struct obd_export *exp,
- struct obd_info *oinfo)
+ struct obdo *oa)
{
struct obd_device *obd = class_exp2obd(exp);
- u64 id = ostid_id(&oinfo->oi_oa->o_oi);
+ u64 id = ostid_id(&oa->o_oi);
- ENTRY;
- if (!obd) {
- CERROR("invalid client cookie "LPX64"\n",
- exp->exp_handle.h_cookie);
- RETURN(-EINVAL);
- }
+ ENTRY;
+ if (!obd) {
+ CERROR("invalid client cookie "LPX64"\n",
+ exp->exp_handle.h_cookie);
+ RETURN(-EINVAL);
+ }
- if (!(oinfo->oi_oa->o_valid & OBD_MD_FLID)) {
- CERROR("obdo missing FLID valid flag: "LPX64"\n",
- oinfo->oi_oa->o_valid);
- RETURN(-EINVAL);
- }
+ if (!(oa->o_valid & OBD_MD_FLID)) {
+ CERROR("obdo missing FLID valid flag: "LPX64"\n", oa->o_valid);
+ RETURN(-EINVAL);
+ }
- obdo_cpy_md(oinfo->oi_oa, &obd->u.echo.eo_oa, oinfo->oi_oa->o_valid);
- ostid_set_seq_echo(&oinfo->oi_oa->o_oi);
- ostid_set_id(&oinfo->oi_oa->o_oi, id);
+ obdo_cpy_md(oa, &obd->u.echo.eo_oa, oa->o_valid);
+ ostid_set_seq_echo(&oa->o_oi);
+ ostid_set_id(&oa->o_oi, id);
RETURN(0);
}
static int echo_setattr(const struct lu_env *env, struct obd_export *exp,
- struct obd_info *oinfo)
+ struct obdo *oa)
{
- struct obd_device *obd = class_exp2obd(exp);
+ struct obd_device *obd = class_exp2obd(exp);
- ENTRY;
- if (!obd) {
- CERROR("invalid client cookie "LPX64"\n",
- exp->exp_handle.h_cookie);
- RETURN(-EINVAL);
- }
+ ENTRY;
+ if (!obd) {
+ CERROR("invalid client cookie "LPX64"\n",
+ exp->exp_handle.h_cookie);
+ RETURN(-EINVAL);
+ }
- if (!(oinfo->oi_oa->o_valid & OBD_MD_FLID)) {
- CERROR("obdo missing FLID valid flag: "LPX64"\n",
- oinfo->oi_oa->o_valid);
- RETURN(-EINVAL);
- }
+ if (!(oa->o_valid & OBD_MD_FLID)) {
+ CERROR("obdo missing FLID valid flag: "LPX64"\n", oa->o_valid);
+ RETURN(-EINVAL);
+ }
- memcpy(&obd->u.echo.eo_oa, oinfo->oi_oa, sizeof(*oinfo->oi_oa));
+ obd->u.echo.eo_oa = *oa;
RETURN(0);
}
/* Take extra ref so __free_pages() can be called OK */
get_page(res->lnb_page);
} else {
- OBD_PAGE_ALLOC(res->lnb_page, gfp_mask);
+ res->lnb_page = alloc_page(gfp_mask);
if (res->lnb_page == NULL) {
CERROR("can't get page for id " DOSTID"\n",
POSTID(&obj->ioo_oid));
kunmap(page);
/* NB see comment above regarding persistent pages */
- OBD_PAGE_FREE(page);
+ __free_page(page);
}
return rc;
CERROR("cleaning up %u pages (%d obdos)\n", *pages, objcount);
for (i = 0; i < *pages; i++) {
kunmap(res[i].lnb_page);
- /* NB if this is a persistent page, __free_pages will just
+ /* NB if this is a persistent page, __free_page() will just
* lose the extra ref gained above */
- OBD_PAGE_FREE(res[i].lnb_page);
+ __free_page(res[i].lnb_page);
res[i].lnb_page = NULL;
atomic_dec(&obd->u.echo.eo_prep);
}
commitrw_cleanup:
atomic_sub(pgs, &obd->u.echo.eo_prep);
- CERROR("cleaning up %d pages (%d obdos)\n",
- niocount - pgs - 1, objcount);
+ CERROR("cleaning up %d pages (%d obdos)\n",
+ niocount - pgs - 1, objcount);
- while (pgs < niocount) {
+ while (pgs < niocount) {
struct page *page = res[pgs++].lnb_page;
- if (page == NULL)
- continue;
+ if (page == NULL)
+ continue;
- /* NB see comment above regarding persistent pages */
- OBD_PAGE_FREE(page);
+ /* NB see comment above regarding persistent pages */
+ __free_page(page);
atomic_dec(&obd->u.echo.eo_prep);
- }
- return rc;
+ }
+ return rc;
}
LPROC_SEQ_FOPS_RO_TYPE(echo, uuid);
void echo_persistent_pages_fini(void)
{
- int i;
+ int i;
- for (i = 0; i < ECHO_PERSISTENT_PAGES; i++)
- if (echo_persistent_pages[i] != NULL) {
- OBD_PAGE_FREE(echo_persistent_pages[i]);
- echo_persistent_pages[i] = NULL;
- }
+ for (i = 0; i < ECHO_PERSISTENT_PAGES; i++)
+ if (echo_persistent_pages[i] != NULL) {
+ __free_page(echo_persistent_pages[i]);
+ echo_persistent_pages[i] = NULL;
+ }
}
int echo_persistent_pages_init(void)
gfp_t gfp_mask = (i < ECHO_PERSISTENT_PAGES/2) ?
GFP_IOFS : GFP_HIGHUSER;
- OBD_PAGE_ALLOC(pg, gfp_mask);
+ pg = alloc_page(gfp_mask);
if (pg == NULL) {
echo_persistent_pages_fini();
return -ENOMEM;