Details
-
Bug
-
Resolution: Unresolved
-
Critical
-
None
-
Lustre 2.14.0, Lustre 2.16.1
-
None
-
3
-
9223372036854775807
Description
static int pool_add_objects(int nobjects, struct obd_page_pool *page_pool) { ... for (i = 0; i < nptr_pages; i++) { OBD_ALLOC(ptr_pages[i], PAGE_SIZE); if (ptr_pages[i] == NULL) goto out_ptr_pages; for (j = 0; j < PTRS_PER_PAGE && alloced < nobjects; j++) { if (pool_order == 0) ptr_pages[i][j] = alloc_page(GFP_NOFS | __GFP_HIGHMEM); else { OBD_ALLOC_LARGE(ptr_pages[i][j], object_size(page_pool)); } if (ptr_pages[i][j] == NULL) goto out_ptr_pages; alloced++; } }
If pool_add_objects would be called from obd_pool_get_objects it is expected that it stores the address of buffer in ptr_pages[i][j] instead of pointer to page.
It is especially critical FOR CSDC with aarch64 + 64K pages on clients.
Attachments
Issue Links
- is related to
-
LU-18691 quota interop w/64k pages
-
- Open
-