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
-
- Resolved
-