Revert "Evict meta data from ghost lists + l2arc headers"

This reverts commit fadd0c4da1 which
introduced a regression in honoring the meta limit.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Close #1660
This commit is contained in:
Brian Behlendorf 2013-08-22 12:14:26 -07:00
parent bff32e0972
commit c273d60d80

View File

@ -2104,9 +2104,8 @@ arc_do_user_evicts(void)
void void
arc_adjust_meta(int64_t adjustment, boolean_t may_prune) 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) { if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_METADATA] > 0) {
delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], adjustment); delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], adjustment);
arc_evict(arc_mru, 0, delta, FALSE, ARC_BUFC_METADATA); 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) { if (adjustment > 0 && arc_mfu->arcs_lsize[ARC_BUFC_METADATA] > 0) {
delta = MIN(arc_mfu->arcs_lsize[ARC_BUFC_METADATA], adjustment); delta = MIN(arc_mfu->arcs_lsize[ARC_BUFC_METADATA], adjustment);
arc_evict(arc_mfu, 0, delta, FALSE, ARC_BUFC_METADATA); 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; 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;
}
/* Request the VFS release some meta data */
if (may_prune && (adjustment > 0) && (arc_meta_used > arc_meta_limit)) if (may_prune && (adjustment > 0) && (arc_meta_used > arc_meta_limit))
arc_do_user_prune(zfs_arc_meta_prune); arc_do_user_prune(zfs_arc_meta_prune);
} }