diff --git a/lustre/cmm/cmm_split.c b/lustre/cmm/cmm_split.c
index 193a8b0bcf6d36c8198e23f31f7381cd2fceafba..51d2f33ccf2d8b90a146ce24e3fe3df3a015f945 100644
--- a/lustre/cmm/cmm_split.c
+++ b/lustre/cmm/cmm_split.c
@@ -612,7 +612,7 @@ static int cmm_split_process_dir(const struct lu_env *env,
         rdpg->rp_pages  = cmm_env_info(env)->cmi_pages;
 
         for (i = 0; i < rdpg->rp_npages; i++) {
-                rdpg->rp_pages[i] = alloc_pages(GFP_KERNEL, 0);
+                rdpg->rp_pages[i] = cfs_alloc_page(CFS_ALLOC_STD);
                 if (rdpg->rp_pages[i] == NULL)
                         GOTO(cleanup, rc = -ENOMEM);
         }
@@ -642,7 +642,7 @@ static int cmm_split_process_dir(const struct lu_env *env,
 cleanup:
         for (i = 0; i < rdpg->rp_npages; i++)
                 if (rdpg->rp_pages[i] != NULL)
-                        __free_pages(rdpg->rp_pages[i], 0);
+                        __cfs_free_page(rdpg->rp_pages[i]);
         return rc;
 }
 
diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c
index 18bec0dc40a4980c11be102f170148b365c05e01..6d6f6dcbb089947b469d239ce0561423993c8360 100644
--- a/lustre/mdt/mdt_handler.c
+++ b/lustre/mdt/mdt_handler.c
@@ -1263,7 +1263,7 @@ static int mdt_writepage(struct mdt_thread_info *info)
                 RETURN(err_serious(-ENOMEM));
 
         /* allocate the page for the desc */
-        page = alloc_pages(GFP_KERNEL, 0);
+        page = cfs_alloc_page(CFS_ALLOC_STD);
         if (page == NULL)
                 GOTO(desc_cleanup, rc = -ENOMEM);
 
@@ -1317,7 +1317,7 @@ static int mdt_writepage(struct mdt_thread_info *info)
 cleanup_lwi:
         OBD_FREE_PTR(lwi);
 cleanup_page:
-        __free_pages(page, 0);
+        __cfs_free_page(page);
 desc_cleanup:
         ptlrpc_free_bulk(desc);
         RETURN(rc);
@@ -1364,7 +1364,7 @@ static int mdt_readpage(struct mdt_thread_info *info)
                 RETURN(-ENOMEM);
 
         for (i = 0; i < rdpg->rp_npages; ++i) {
-                rdpg->rp_pages[i] = alloc_pages(GFP_KERNEL, 0);
+                rdpg->rp_pages[i] = cfs_alloc_page(CFS_ALLOC_STD);
                 if (rdpg->rp_pages[i] == NULL)
                         GOTO(free_rdpg, rc = -ENOMEM);
         }
@@ -1382,7 +1382,7 @@ free_rdpg:
 
         for (i = 0; i < rdpg->rp_npages; i++)
                 if (rdpg->rp_pages[i] != NULL)
-                        __free_pages(rdpg->rp_pages[i], 0);
+                        __cfs_free_page(rdpg->rp_pages[i]);
         OBD_FREE(rdpg->rp_pages, rdpg->rp_npages * sizeof rdpg->rp_pages[0]);
 
         MDT_FAIL_RETURN(OBD_FAIL_MDS_SENDPAGE, 0);
diff --git a/lustre/osd/osd_handler.c b/lustre/osd/osd_handler.c
index ccf33eee801b51204b03c286616958bc0e140145..7033717e525f5ccad727b97661f2561eb02e3ecd 100644
--- a/lustre/osd/osd_handler.c
+++ b/lustre/osd/osd_handler.c
@@ -656,7 +656,7 @@ static struct thandle *osd_trans_start(const struct lu_env *env,
                 RETURN(ERR_PTR(hook_res));
 
         if (osd_param_is_sane(dev, p)) {
-                OBD_ALLOC_GFP(oh, sizeof *oh, GFP_NOFS);
+                OBD_ALLOC_GFP(oh, sizeof *oh, CFS_ALLOC_IO);
                 if (oh != NULL) {
                         /*
                          * XXX temporary stuff. Some abstraction layer should