summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua MacDonald <josh.macdonald@gmail.com>2015-12-17 22:50:00 -0800
committerJoshua MacDonald <josh.macdonald@gmail.com>2015-12-17 22:50:00 -0800
commit24def2845b33800718d2b3f70b8cf575c42da918 (patch)
treee110edc815413f5d6edf5a0a60d0d27baa843686
parent5663e6d7b9f5ae63597a6aa794bcb6bd5d6ff574 (diff)
Fix incorrect buffer allocation which resulted in cache misses wasting a page of the cache each access, causing bad I/O performance (long standing bug). Speedup noticeable in decode operations.
-rw-r--r--xdelta3/xdelta3-blkcache.h10
1 files changed, 4 insertions, 6 deletions
diff --git a/xdelta3/xdelta3-blkcache.h b/xdelta3/xdelta3-blkcache.h
index d4ae926..2102a58 100644
--- a/xdelta3/xdelta3-blkcache.h
+++ b/xdelta3/xdelta3-blkcache.h
@@ -309,9 +309,13 @@ main_getblk_lru (xd3_source *source, xoff_t blkno,
309 main_blklru_list_remove (blru); 309 main_blklru_list_remove (blru);
310 main_blklru_list_push_back (& lru_list, blru); 310 main_blklru_list_push_back (& lru_list, blru);
311 (*blrup) = blru; 311 (*blrup) = blru;
312 IF_DEBUG1 (DP(RINT "[getblk_lru] HIT blkno = %"Z"u lru_size=%d\n",
313 blkno, lru_size));
312 return 0; 314 return 0;
313 } 315 }
314 } 316 }
317 IF_DEBUG1 (DP(RINT "[getblk_lru] MISS blkno = %"Z"u lru_size=%d\n",
318 blkno, lru_size));
315 } 319 }
316 320
317 if (do_src_fifo) 321 if (do_src_fifo)
@@ -512,12 +516,6 @@ main_getblk_func (xd3_stream *stream,
512 516
513 XD3_ASSERT (sfile->source_position == pos); 517 XD3_ASSERT (sfile->source_position == pos);
514 518
515 if (did_seek &&
516 (ret = main_getblk_lru (source, blkno, & blru, & is_new)))
517 {
518 return ret;
519 }
520
521 if ((ret = main_read_primary_input (sfile, 519 if ((ret = main_read_primary_input (sfile,
522 (uint8_t*) blru->blk, 520 (uint8_t*) blru->blk,
523 source->blksize, 521 source->blksize,