This patch originates from the Debian project, see https://www.debian.org/ 18dbpagesize_binpower.dpatch by Make sure that the pagesize passed to db__set_pagesize() is a power of two. nvi stores the content of files in BDB database structures. When initiating a file, it picks a page size for the database to fit the file within 15 pages, with a minimal page size of 1K and maximal of 10K. In vanilla nvi, this size is calculated as a multiple of 1024. Modern versions of BDB, however, require the page size of a database to be a power of two, which this patch addresses, ridding us of the following message: BDB0511 page sizes must be a power-of-2 --- nvi-1.81.6.orig/common/exf.c 2009-03-09 01:48:01.695862889 +0100 +++ nvi-1.81.6/common/exf.c 2009-03-09 10:42:41.147866272 +0100 @@ -249,11 +249,10 @@ * (vi should have good locality) or smaller than 1K. */ psize = ((sb.st_size / 15) + 1023) / 1024; - if (psize > 10) - psize = 10; - if (psize == 0) - psize = 1; - psize *= 1024; + if (psize >= 8) psize=8<<10; + else if (psize >= 4) psize=4<<10; + else if (psize >= 2) psize=2<<10; + else psize=1<<10; F_SET(ep, F_DEVSET); ep->mdev = sb.st_dev; s/nar.scm?id=94476296726b3d74d44b5c76120f62fd3f75ab67'>treecommitdiff
path: root/tests/nar.scm
AgeCommit message (Expand)Author
2021-11-16daemon: Do not deduplicate files smaller than 8 KiB....Files smaller than 8 KiB typically represent ~70% of the entries in /gnu/store/.links but only contribute to ~4% of the space savings afforded by deduplication. Not considering these files for deduplication speeds up file insertion in the store and, more importantly, leaves 'removeUnusedLinks' with fewer entries to traverse, thereby speeding it up proportionally. Partly fixes <https://issues.guix.gnu.org/24937>. * config-daemon.ac: Remove symlink hard link check and CAN_LINK_SYMLINK definition. * guix/store/deduplication.scm (%deduplication-minimum-size): New variable. (deduplicate)[loop]: Do not recurse when FILE's size is below %DEDUPLICATION-MINIMUM-SIZE. (dump-port): New procedure. (dump-file/deduplicate)[hash]: Turn into... [dump-and-compute-hash]: ... this thunk. Call 'deduplicate' only when SIZE is greater than %DEDUPLICATION-MINIMUM-SIZE; otherwise call 'dump-port'. * nix/libstore/gc.cc (LocalStore::removeUnusedLinks): Drop files where st.st_size < deduplicationMinSize. * nix/libstore/local-store.hh (deduplicationMinSize): New declaration. * nix/libstore/optimise-store.cc (deduplicationMinSize): New variable. (LocalStore::optimisePath_): Return when PATH is a symlink or smaller than 'deduplicationMinSize'. * tests/derivations.scm ("identical files are deduplicated"): Produce files bigger than %DEDUPLICATION-MINIMUM-SIZE. * tests/nar.scm ("restore-file-set with directories (signed, valid)"): Likewise. * tests/store-deduplication.scm ("deduplicate, below %deduplication-minimum-size"): New test. ("deduplicate", "deduplicate, ENOSPC"): Produce files bigger than %DEDUPLICATION-MINIMUM-SIZE. * tests/store.scm ("substitute, deduplication"): Likewise. Ludovic Courtès