From 05219f018167fd2731255e56fd72b078958af639 Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Mon, 15 Jun 2020 13:46:07 -0600 Subject: [PATCH] LU-13680 osd-ldiskfs: handle large allocations Use OBD_ALLOC_PAGE_ARRAY_LARGE() for oti_dio_pages, as this allocation can be as large as 512KB due to large PTLRPC_MAX_BRW_PAGES. Lustre-change: https://review.whamcloud.com/38943 Lustre-commit: bbb14d40a4be6a9172b80ed3208f81be2f1d1b66 Test-Parameters: trivial Fixes: 72372486a5e9 ("LU-11347 osd: do not use pagecache for I/O") Signed-off-by: Andreas Dilger Change-Id: I0a0557e42bb5db5612c78e6d9b87f366a23ebbe5 Reviewed-by: Alex Zhuravlev Reviewed-by: Yang Sheng Signed-off-by: Etienne AUJAMES Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/49478 Tested-by: jenkins Tested-by: Maloo --- lustre/osd-ldiskfs/osd_handler.c | 4 ++-- lustre/osd-ldiskfs/osd_io.c | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index f8d9bea..8202f0b 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -7502,8 +7502,8 @@ static void osd_key_fini(const struct lu_context *ctx, if (info->oti_dio_pages[i]) __free_page(info->oti_dio_pages[i]); } - OBD_FREE(info->oti_dio_pages, - sizeof(struct page *) * PTLRPC_MAX_BRW_PAGES); + OBD_FREE_LARGE(info->oti_dio_pages, + sizeof(struct page *) * PTLRPC_MAX_BRW_PAGES); } if (info->oti_inode != NULL) diff --git a/lustre/osd-ldiskfs/osd_io.c b/lustre/osd-ldiskfs/osd_io.c index 1bdc6e9..2d7fb17 100644 --- a/lustre/osd-ldiskfs/osd_io.c +++ b/lustre/osd-ldiskfs/osd_io.c @@ -850,8 +850,9 @@ static int osd_bufs_get(const struct lu_env *env, struct dt_object *dt, if (!osd_use_page_cache(osd_obj2dev(obj))) { if (unlikely(!oti->oti_dio_pages)) { - OBD_ALLOC(oti->oti_dio_pages, - sizeof(struct page *) * PTLRPC_MAX_BRW_PAGES); + OBD_ALLOC_LARGE(oti->oti_dio_pages, + sizeof(struct page *) * + PTLRPC_MAX_BRW_PAGES); if (!oti->oti_dio_pages) return -ENOMEM; } -- 1.8.3.1