|
@@ -2329,18 +2329,10 @@ void *jbd2_alloc(size_t size, gfp_t flags)
|
|
|
|
|
|
BUG_ON(size & (size-1)); /* Must be a power of 2 */
|
|
|
|
|
|
- flags |= __GFP_REPEAT;
|
|
|
- if (size == PAGE_SIZE)
|
|
|
- ptr = (void *)__get_free_pages(flags, 0);
|
|
|
- else if (size > PAGE_SIZE) {
|
|
|
- int order = get_order(size);
|
|
|
-
|
|
|
- if (order < 3)
|
|
|
- ptr = (void *)__get_free_pages(flags, order);
|
|
|
- else
|
|
|
- ptr = vmalloc(size);
|
|
|
- } else
|
|
|
+ if (size < PAGE_SIZE)
|
|
|
ptr = kmem_cache_alloc(get_slab(size), flags);
|
|
|
+ else
|
|
|
+ ptr = (void *)__get_free_pages(flags, get_order(size));
|
|
|
|
|
|
/* Check alignment; SLUB has gotten this wrong in the past,
|
|
|
* and this can lead to user data corruption! */
|
|
@@ -2351,20 +2343,10 @@ void *jbd2_alloc(size_t size, gfp_t flags)
|
|
|
|
|
|
void jbd2_free(void *ptr, size_t size)
|
|
|
{
|
|
|
- if (size == PAGE_SIZE) {
|
|
|
- free_pages((unsigned long)ptr, 0);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (size > PAGE_SIZE) {
|
|
|
- int order = get_order(size);
|
|
|
-
|
|
|
- if (order < 3)
|
|
|
- free_pages((unsigned long)ptr, order);
|
|
|
- else
|
|
|
- vfree(ptr);
|
|
|
- return;
|
|
|
- }
|
|
|
- kmem_cache_free(get_slab(size), ptr);
|
|
|
+ if (size < PAGE_SIZE)
|
|
|
+ kmem_cache_free(get_slab(size), ptr);
|
|
|
+ else
|
|
|
+ free_pages((unsigned long)ptr, get_order(size));
|
|
|
};
|
|
|
|
|
|
/*
|