journal.c (6ea24cf79e055f0a62a64baa8587e2254a493c7b) | journal.c (f2db19719a4e789a58ac024b43f12eeb9e458074) |
---|---|
1/* 2 * linux/fs/jbd2/journal.c 3 * 4 * Written by Stephen C. Tweedie <sct@redhat.com>, 1998 5 * 6 * Copyright 1998 Red Hat corp --- All Rights Reserved 7 * 8 * This file is part of the Linux kernel and is made available under --- 80 unchanged lines hidden (view full) --- 89EXPORT_SYMBOL(jbd2_log_start_commit); 90EXPORT_SYMBOL(jbd2_journal_start_commit); 91EXPORT_SYMBOL(jbd2_journal_force_commit_nested); 92EXPORT_SYMBOL(jbd2_journal_wipe); 93EXPORT_SYMBOL(jbd2_journal_blocks_per_page); 94EXPORT_SYMBOL(jbd2_journal_invalidatepage); 95EXPORT_SYMBOL(jbd2_journal_try_to_free_buffers); 96EXPORT_SYMBOL(jbd2_journal_force_commit); | 1/* 2 * linux/fs/jbd2/journal.c 3 * 4 * Written by Stephen C. Tweedie <sct@redhat.com>, 1998 5 * 6 * Copyright 1998 Red Hat corp --- All Rights Reserved 7 * 8 * This file is part of the Linux kernel and is made available under --- 80 unchanged lines hidden (view full) --- 89EXPORT_SYMBOL(jbd2_log_start_commit); 90EXPORT_SYMBOL(jbd2_journal_start_commit); 91EXPORT_SYMBOL(jbd2_journal_force_commit_nested); 92EXPORT_SYMBOL(jbd2_journal_wipe); 93EXPORT_SYMBOL(jbd2_journal_blocks_per_page); 94EXPORT_SYMBOL(jbd2_journal_invalidatepage); 95EXPORT_SYMBOL(jbd2_journal_try_to_free_buffers); 96EXPORT_SYMBOL(jbd2_journal_force_commit); |
97EXPORT_SYMBOL(jbd2_journal_file_inode); | 97EXPORT_SYMBOL(jbd2_journal_inode_add_write); 98EXPORT_SYMBOL(jbd2_journal_inode_add_wait); |
98EXPORT_SYMBOL(jbd2_journal_init_jbd_inode); 99EXPORT_SYMBOL(jbd2_journal_release_jbd_inode); 100EXPORT_SYMBOL(jbd2_journal_begin_ordered_truncate); 101EXPORT_SYMBOL(jbd2_inode_cache); 102 103static void __journal_abort_soft (journal_t *journal, int errno); 104static int jbd2_journal_create_slab(size_t slab_size); 105 --- 2217 unchanged lines hidden (view full) --- 2323} 2324 2325void *jbd2_alloc(size_t size, gfp_t flags) 2326{ 2327 void *ptr; 2328 2329 BUG_ON(size & (size-1)); /* Must be a power of 2 */ 2330 | 99EXPORT_SYMBOL(jbd2_journal_init_jbd_inode); 100EXPORT_SYMBOL(jbd2_journal_release_jbd_inode); 101EXPORT_SYMBOL(jbd2_journal_begin_ordered_truncate); 102EXPORT_SYMBOL(jbd2_inode_cache); 103 104static void __journal_abort_soft (journal_t *journal, int errno); 105static int jbd2_journal_create_slab(size_t slab_size); 106 --- 2217 unchanged lines hidden (view full) --- 2324} 2325 2326void *jbd2_alloc(size_t size, gfp_t flags) 2327{ 2328 void *ptr; 2329 2330 BUG_ON(size & (size-1)); /* Must be a power of 2 */ 2331 |
2331 flags |= __GFP_REPEAT; 2332 if (size == PAGE_SIZE) 2333 ptr = (void *)__get_free_pages(flags, 0); 2334 else if (size > PAGE_SIZE) { 2335 int order = get_order(size); 2336 2337 if (order < 3) 2338 ptr = (void *)__get_free_pages(flags, order); 2339 else 2340 ptr = vmalloc(size); 2341 } else | 2332 if (size < PAGE_SIZE) |
2342 ptr = kmem_cache_alloc(get_slab(size), flags); | 2333 ptr = kmem_cache_alloc(get_slab(size), flags); |
2334 else 2335 ptr = (void *)__get_free_pages(flags, get_order(size)); |
|
2343 2344 /* Check alignment; SLUB has gotten this wrong in the past, 2345 * and this can lead to user data corruption! */ 2346 BUG_ON(((unsigned long) ptr) & (size-1)); 2347 2348 return ptr; 2349} 2350 2351void jbd2_free(void *ptr, size_t size) 2352{ | 2336 2337 /* Check alignment; SLUB has gotten this wrong in the past, 2338 * and this can lead to user data corruption! */ 2339 BUG_ON(((unsigned long) ptr) & (size-1)); 2340 2341 return ptr; 2342} 2343 2344void jbd2_free(void *ptr, size_t size) 2345{ |
2353 if (size == PAGE_SIZE) { 2354 free_pages((unsigned long)ptr, 0); 2355 return; 2356 } 2357 if (size > PAGE_SIZE) { 2358 int order = get_order(size); 2359 2360 if (order < 3) 2361 free_pages((unsigned long)ptr, order); 2362 else 2363 vfree(ptr); 2364 return; 2365 } 2366 kmem_cache_free(get_slab(size), ptr); | 2346 if (size < PAGE_SIZE) 2347 kmem_cache_free(get_slab(size), ptr); 2348 else 2349 free_pages((unsigned long)ptr, get_order(size)); |
2367}; 2368 2369/* 2370 * Journal_head storage management 2371 */ 2372static struct kmem_cache *jbd2_journal_head_cache; 2373#ifdef CONFIG_JBD2_DEBUG 2374static atomic_t nr_journal_heads = ATOMIC_INIT(0); --- 347 unchanged lines hidden --- | 2350}; 2351 2352/* 2353 * Journal_head storage management 2354 */ 2355static struct kmem_cache *jbd2_journal_head_cache; 2356#ifdef CONFIG_JBD2_DEBUG 2357static atomic_t nr_journal_heads = ATOMIC_INIT(0); --- 347 unchanged lines hidden --- |