summaryrefslogtreecommitdiff
path: root/debian/patches/ext2fs-optimize-bcache0001-ext2fs-improve-the-block-cache.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/ext2fs-optimize-bcache0001-ext2fs-improve-the-block-cache.patch')
-rw-r--r--debian/patches/ext2fs-optimize-bcache0001-ext2fs-improve-the-block-cache.patch53
1 files changed, 53 insertions, 0 deletions
diff --git a/debian/patches/ext2fs-optimize-bcache0001-ext2fs-improve-the-block-cache.patch b/debian/patches/ext2fs-optimize-bcache0001-ext2fs-improve-the-block-cache.patch
new file mode 100644
index 00000000..05b341de
--- /dev/null
+++ b/debian/patches/ext2fs-optimize-bcache0001-ext2fs-improve-the-block-cache.patch
@@ -0,0 +1,53 @@
+From 1b6d78a1a79afe79a71841d914a4e49d6eb9100c Mon Sep 17 00:00:00 2001
+From: Justus Winter <4winter@informatik.uni-hamburg.de>
+Date: Thu, 12 Nov 2015 23:22:13 +0100
+Subject: [PATCH hurd 1/3] ext2fs: improve the block cache
+
+* ext2fs/pager.c (disk_cache_block_ref): Improve the cache by using
+the new lookup and insertion functions that return and use a location
+pointer.
+---
+ ext2fs/pager.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/ext2fs/pager.c b/ext2fs/pager.c
+index 9df7e0b..2528856 100644
+--- a/ext2fs/pager.c
++++ b/ext2fs/pager.c
+@@ -960,6 +960,7 @@ disk_cache_block_ref (block_t block)
+ {
+ int index;
+ void *bptr;
++ hurd_ihash_locp_t slot;
+
+ assert (block < store->size >> log2_block_size);
+
+@@ -968,7 +969,7 @@ disk_cache_block_ref (block_t block)
+ retry_ref:
+ pthread_mutex_lock (&disk_cache_lock);
+
+- bptr = hurd_ihash_find (disk_cache_bptr, block);
++ bptr = hurd_ihash_locp_find (disk_cache_bptr, block, &slot);
+ if (bptr)
+ /* Already mapped. */
+ {
+@@ -1091,12 +1092,13 @@ retry_ref:
+ #endif
+
+ /* Re-associate. */
++
++ /* New association. */
++ if (hurd_ihash_locp_add (disk_cache_bptr, slot, block, bptr))
++ ext2_panic ("Couldn't hurd_ihash_locp_add new disk block");
+ if (disk_cache_info[index].block != DC_NO_BLOCK)
+ /* Remove old association. */
+ hurd_ihash_remove (disk_cache_bptr, disk_cache_info[index].block);
+- /* New association. */
+- if (hurd_ihash_add (disk_cache_bptr, block, bptr))
+- ext2_panic ("Couldn't hurd_ihash_add new disk block");
+ assert (! (disk_cache_info[index].flags & DC_DONT_REUSE & ~DC_UNTOUCHED));
+ disk_cache_info[index].block = block;
+ assert (! disk_cache_info[index].ref_count);
+--
+2.1.4
+