HomeFreeBSD

cache: don't use cache_purge_negative when renaming

Description

cache: don't use cache_purge_negative when renaming

It avoidably scans (and evicts) unrelated entries. Instead take
advantage of passed componentname and perform a hash lookup
for the exact one.

Sample data from buildworld probed on cache_purge_negative extended
to count both scanned and evicted entries on each call are below.
At most it has to evict 1.

evicted
         value  ------------- Distribution ------------- count
            -1 |                                         0
             0 |@@@@@@@@@@@@@@@                          19506
             1 |@@@@@                                    5820
             2 |@@@@@@                                   7751
             4 |@@@@@                                    6506
             8 |@@@@@                                    5996
            16 |@@@                                      4029
            32 |@                                        1489
            64 |                                         193
           128 |                                         109
           256 |                                         56
           512 |                                         16
          1024 |                                         7
          2048 |                                         3
          4096 |                                         1
          8192 |                                         1
         16384 |                                         0

scanned
         value  ------------- Distribution ------------- count
            -1 |                                         0
             0 |@@                                       2456
             1 |@                                        1496
             2 |@@                                       2728
             4 |@@@                                      4171
             8 |@@@@                                     5122
            16 |@@@@                                     5335
            32 |@@@@@                                    6279
            64 |@@@@                                     5671
           128 |@@@@                                     4558
           256 |@@                                       3123
           512 |@@                                       2790
          1024 |@@                                       2449
          2048 |@@                                       3021
          4096 |@                                        1398
          8192 |@                                        886
         16384 |                                         0

Details

Provenance
mjgAuthored on
Parents
rS364419: cache: add cache_rename, a dedicated helper to use for renames
Branches
Unknown
Tags
Unknown