git://git.camperquake.de
/
zfs.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
bff32e0
)
Revert "Evict meta data from ghost lists + l2arc headers"
author
Brian Behlendorf
<behlendorf1@llnl.gov>
Thu, 22 Aug 2013 19:14:26 +0000
(12:14 -0700)
committer
Brian Behlendorf
<behlendorf1@llnl.gov>
Thu, 22 Aug 2013 19:15:37 +0000
(12:15 -0700)
This reverts commit
fadd0c4da1e2ccd6014800d8b1a0fd117dd323e8
which
introduced a regression in honoring the meta limit.
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Close #1660
module/zfs/arc.c
patch
|
blob
|
history
diff --git
a/module/zfs/arc.c
b/module/zfs/arc.c
index
32ad80b
..
ce4a023
100644
(file)
--- a/
module/zfs/arc.c
+++ b/
module/zfs/arc.c
@@
-2104,9
+2104,8
@@
arc_do_user_evicts(void)
void
arc_adjust_meta(int64_t adjustment, boolean_t may_prune)
{
void
arc_adjust_meta(int64_t adjustment, boolean_t may_prune)
{
- int64_t delta
, tmp = adjustment
;
+ int64_t delta;
- /* Evict MRU+MFU meta data to ghost lists */
if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_METADATA] > 0) {
delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], adjustment);
arc_evict(arc_mru, 0, delta, FALSE, ARC_BUFC_METADATA);
if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_METADATA] > 0) {
delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], adjustment);
arc_evict(arc_mru, 0, delta, FALSE, ARC_BUFC_METADATA);
@@
-2116,24
+2115,9
@@
arc_adjust_meta(int64_t adjustment, boolean_t may_prune)
if (adjustment > 0 && arc_mfu->arcs_lsize[ARC_BUFC_METADATA] > 0) {
delta = MIN(arc_mfu->arcs_lsize[ARC_BUFC_METADATA], adjustment);
arc_evict(arc_mfu, 0, delta, FALSE, ARC_BUFC_METADATA);
if (adjustment > 0 && arc_mfu->arcs_lsize[ARC_BUFC_METADATA] > 0) {
delta = MIN(arc_mfu->arcs_lsize[ARC_BUFC_METADATA], adjustment);
arc_evict(arc_mfu, 0, delta, FALSE, ARC_BUFC_METADATA);
- }
-
- /* Evict ghost MRU+MFU meta data */
- adjustment = tmp;
-
- if (adjustment > 0 && arc_mru_ghost->arcs_size > 0) {
- delta = MIN(arc_mru_ghost->arcs_size, adjustment);
- arc_evict_ghost(arc_mru_ghost, 0, delta, ARC_BUFC_METADATA);
- adjustment -= delta;
- }
-
- if (adjustment > 0 && arc_mfu_ghost->arcs_size > 0) {
- delta = MIN(arc_mfu_ghost->arcs_size, adjustment);
- arc_evict_ghost(arc_mfu_ghost, 0, delta, ARC_BUFC_METADATA);
adjustment -= delta;
}
adjustment -= delta;
}
- /* Request the VFS release some meta data */
if (may_prune && (adjustment > 0) && (arc_meta_used > arc_meta_limit))
arc_do_user_prune(zfs_arc_meta_prune);
}
if (may_prune && (adjustment > 0) && (arc_meta_used > arc_meta_limit))
arc_do_user_prune(zfs_arc_meta_prune);
}