From 77765b540b79bdc42d4f25f174004bbbd06b0a32 Mon Sep 17 00:00:00 2001 From: Prakash Surya Date: Fri, 3 Jan 2014 10:11:14 -0800 Subject: [PATCH] Remove "arc_meta_used" from arc_adjust calculation Using "arc_meta_used" to determine if the arc's mru list is over it's target value of "arc_p" doesn't seem correct. The size of the mru list and the value of "arc_meta_used", although related, are completely independent. Buffers contained in "arc_meta_used" may not even be contained in the arc's mru list. As such, this patch removes "arc_meta_used" from the calculation in arc_adjust. Signed-off-by: Prakash Surya Signed-off-by: Brian Behlendorf Issue #2110 --- module/zfs/arc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/module/zfs/arc.c b/module/zfs/arc.c index 9c2d0eaab..f28748423 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -2144,8 +2144,7 @@ arc_adjust(void) */ adjustment = MIN((int64_t)(arc_size - arc_c), - (int64_t)(arc_anon->arcs_size + arc_mru->arcs_size + arc_meta_used - - arc_p)); + (int64_t)(arc_anon->arcs_size + arc_mru->arcs_size - arc_p)); if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_DATA] > 0) { delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_DATA], adjustment);