From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756926AbcHXVeh (ORCPT ); Wed, 24 Aug 2016 17:34:37 -0400 Received: from p3plsmtps2ded04.prod.phx3.secureserver.net ([208.109.80.198]:49560 "EHLO p3plsmtps2ded04.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756759AbcHXVee (ORCPT ); Wed, 24 Aug 2016 17:34:34 -0400 x-originating-ip: 72.167.245.219 From: kys@exchange.microsoft.com To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, devel@linuxdriverproject.org, olaf@aepfle.de, apw@canonical.com, vkuznets@redhat.com, jasowang@redhat.com, leann.ogasawara@canonical.com, alexng@microsoft.com Cc: Alex Ng , "K. Y. Srinivasan" Subject: [PATCH 5/5] Drivers: hv: balloon: Use available memory value in pressure report Date: Wed, 24 Aug 2016 16:23:13 -0700 Message-Id: <1472080993-29694-5-git-send-email-kys@exchange.microsoft.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1472080993-29694-1-git-send-email-kys@exchange.microsoft.com> References: <1472080943-29654-1-git-send-email-kys@exchange.microsoft.com> <1472080993-29694-1-git-send-email-kys@exchange.microsoft.com> Reply-To: kys@microsoft.com X-CMAE-Envelope: MS4wfHdNo+5Z3e1KNUgsGCsigpZ0L9EXbJyXTPGMnamChf1dWXd7E1vTucFKeH2hg9KObujbpAzaGxPlhH99hVFGOrq9VwL1Yu6mMeEX0M8kublX5u5hhKst 3A27eHOzPwmkNgggNwVPuctC0Ol3IqeLzYd/nQ8og2xkC+gnqoXwLUueYD4Iar0fhBNhhSWJq+VPSArYxr3fEE9u3TOVTV9ILT/ZSMB4G5eMbovakc9mKEYg KvWoOTQKtVt9zSNgx6devsK1gr1T5UlIyOtR0X7Rz9LJnzhF3WwLCxy6+4NIg6Yv42bwNOQeNPz+k58hwIJ4DmVpcOFAy6QR1dQ+KiHGiOvTwQkQDqOxYggQ v38/iYS12PkvdbI7voAUjWS9D23NR6DvmjdK9mDzRRoICLVrKkFH9gdxiFXI3Qc6ptEQl6sQ/X1RqY/pa6RG8yX7gxcEJbnSEjUCc+9fUL090WGsDexpr4Uq 02GNZXZYof1LUGoLC2qA95sO/60mYXWeo4At7Ap2os2nDfvNGa+FORDlF84SvNSgFOwIK4myo4Rz8SDq Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alex Ng Reports for available memory should use the si_mem_available() value. The previous freeram value does not include available page cache memory. Signed-off-by: Alex Ng Signed-off-by: K. Y. Srinivasan --- drivers/hv/hv_balloon.c | 13 +++++-------- 1 files changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c index d55e0e7..fdf8da9 100644 --- a/drivers/hv/hv_balloon.c +++ b/drivers/hv/hv_balloon.c @@ -1075,7 +1075,6 @@ static unsigned long compute_balloon_floor(void) static void post_status(struct hv_dynmem_device *dm) { struct dm_status status; - struct sysinfo val; unsigned long now = jiffies; unsigned long last_post = last_post_time; @@ -1087,7 +1086,6 @@ static void post_status(struct hv_dynmem_device *dm) if (!time_after(now, (last_post_time + HZ))) return; - si_meminfo(&val); memset(&status, 0, sizeof(struct dm_status)); status.hdr.type = DM_STATUS_REPORT; status.hdr.size = sizeof(struct dm_status); @@ -1103,7 +1101,7 @@ static void post_status(struct hv_dynmem_device *dm) * num_pages_onlined) as committed to the host, otherwise it can try * asking us to balloon them out. */ - status.num_avail = val.freeram; + status.num_avail = si_mem_available(); status.num_committed = vm_memory_committed() + dm->num_pages_ballooned + (dm->num_pages_added > dm->num_pages_onlined ? @@ -1209,7 +1207,7 @@ static void balloon_up(struct work_struct *dummy) int ret; bool done = false; int i; - struct sysinfo val; + long avail_pages; unsigned long floor; /* The host balloons pages in 2M granularity. */ @@ -1221,12 +1219,12 @@ static void balloon_up(struct work_struct *dummy) */ alloc_unit = 512; - si_meminfo(&val); + avail_pages = si_mem_available(); floor = compute_balloon_floor(); /* Refuse to balloon below the floor, keep the 2M granularity. */ - if (val.freeram < num_pages || val.freeram - num_pages < floor) { - num_pages = val.freeram > floor ? (val.freeram - floor) : 0; + if (avail_pages < num_pages || avail_pages - num_pages < floor) { + num_pages = avail_pages > floor ? (avail_pages - floor) : 0; num_pages -= num_pages % PAGES_IN_2M; } @@ -1237,7 +1235,6 @@ static void balloon_up(struct work_struct *dummy) bl_resp->hdr.size = sizeof(struct dm_balloon_response); bl_resp->more_pages = 1; - num_pages -= num_ballooned; num_ballooned = alloc_balloon_pages(&dm_device, num_pages, bl_resp, alloc_unit); -- 1.7.4.1