Displaying 4 results from an estimated 4 matches for "extent_buffer_cache".
2013 Jan 16
6
[PATCH V2] mm/slab: add a leak decoder callback
...ent_state_cache = kmem_cache_create("btrfs_extent_state",
@@ -115,9 +135,11 @@ void extent_io_exit(void)
*/
rcu_barrier();
if (extent_state_cache)
- kmem_cache_destroy(extent_state_cache);
+ kmem_cache_destroy_decoder(extent_state_cache,
+ extent_state_leak_decoder);
if (extent_buffer_cache)
- kmem_cache_destroy(extent_buffer_cache);
+ kmem_cache_destroy_decoder(extent_buffer_cache,
+ extent_buffer_leak_decoder);
}
void extent_io_tree_init(struct extent_io_tree *tree,
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
index f359e4c..bccba3d 100644
--- a/fs/btrfs/e...
2013 Jan 14
5
[PATCH] mm/slab: add a leak decoder callback
...&eb->refs));
+}
+
int __init extent_io_init(void)
{
extent_state_cache = kmem_cache_create("btrfs_extent_state",
@@ -71,11 +91,15 @@ int __init extent_io_init(void)
if (!extent_state_cache)
return -ENOMEM;
+ extent_state_cache->decoder = extent_state_leak_decoder;
+
extent_buffer_cache = kmem_cache_create("btrfs_extent_buffer",
sizeof(struct extent_buffer), 0,
SLAB_RECLAIM_ACCOUNT | SLAB_MEM_SPREAD, NULL);
if (!extent_buffer_cache)
goto free_state_cache;
+
+ extent_buffer_cache->decoder = extent_buffer_leak_decoder;
return 0;
free_state_cache:
diff...
2010 Jul 13
0
[PATCH 1/2] btrfs: restructure try_release_extent_buffer()
...---
1 files changed, 37 insertions(+), 11 deletions(-)
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 41277d6..70b7cc5 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -3097,6 +3097,39 @@ static void __free_extent_buffer(struct extent_buffer *eb)
kmem_cache_free(extent_buffer_cache, eb);
}
+/*
+ * Helper for releasing extent buffer page.
+ */
+static void btrfs_release_extent_buffer_page(struct extent_buffer *eb,
+ unsigned long start_idx)
+{
+ unsigned long index;
+ struct page *page;
+
+ if (!eb->first_page)
+ return;
+
+ index = num_extent_pages(eb->start,...
2012 Dec 18
0
[PATCH] [RFC] Btrfs: Subpagesize blocksize (WIP).
...e_lock);
+ goto written;
+ }
+ eb = next;
+ goto next_eb;
+
+written:
/*
* the filesystem may choose to bump up nr_to_write.
* We have to make sure to honor the new nr_to_write
@@ -4000,6 +4095,18 @@ static void __free_extent_buffer(struct extent_buffer *eb)
kmem_cache_free(extent_buffer_cache, eb);
}
+/* Helper function to free extent buffers when there are multiple
+ * extent buffers per page. */
+static void __free_extent_buffers(struct extent_buffer *eb)
+{
+ struct extent_buffer *next;
+
+ do {
+ next = eb->next;
+ __free_extent_buffer(eb);
+ } while ((eb = next));
+}
+
sta...