From nobody Tue Nov 26 11:25:31 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=1; a=rsa-sha256; t=1708967061; cv=none; d=zohomail.com; s=zohoarc; b=gbUNukhQP8QZ3y/FqT7RPsxVSJQVnSPgf9sbGqJGC5a3R+z1fXNkHi1QHsynZen7R9R0g95bhOS+52uGEbAYNuAUs+EPdWabPryfmNc0ASj25iqDTnWs2rjdMUV0DtnbJYU5H3wkCOJ2644Wzr+f/nq9mLS9joZNYx1dcnVdkUY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1708967061; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kV26etjdgrTttBHqNO1xlpqvRXHOfMKajDrhdh/+Zqo=; b=eW+CWb2M1Fe7UJ3jUF5G1EaPwET1yKpq7CQr9Z1KK3Etk2+jL16fg96W9qWErBsplGs5HgQWGjNTdpoGscleLQ0QBLjj0WTliI7Rlc+vFvhIR0G/KSccNDcuged1nXlFgHqExLo5kBHRSuwrMMK0DExfYHzaSjlKJV871vEUNBE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1708967061408762.3701434757031; Mon, 26 Feb 2024 09:04:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1reeHo-0005ZJ-6g; Mon, 26 Feb 2024 11:57:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reeHl-0005XN-7C for qemu-devel@nongnu.org; Mon, 26 Feb 2024 11:57:01 -0500 Received: from relay.virtuozzo.com ([130.117.225.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reeHX-0007aO-4T for qemu-devel@nongnu.org; Mon, 26 Feb 2024 11:56:53 -0500 Received: from [130.117.225.1] (helo=dev005.ch-qa.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1reeG3-001AD7-02; Mon, 26 Feb 2024 17:56:34 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-Id:Date:Subject:From: Content-Type; bh=kV26etjdgrTttBHqNO1xlpqvRXHOfMKajDrhdh/+Zqo=; b=ijy1WUQl4gy5 15u8ifI9ORKKzhR+7noCc41HWvc7WQUipIoFtoNkaDQp+ck3KFKT8Y/UayQkaluF+CEi07yvtnrLG upOA3l81RBtlj7/5vjjvi/s+rGUj53ZOTco4EQI3Dhl1kGup0mnlWev94HtwdK7W4+zTu6QDGNzZD fkbf/vNu+axs+c/csFxD8ZcElFHR8j7iC+XSUfYTqdFJksPixOsIZQT3gUpBq+q3ZQyM3U1yb8oEz JKgTk2VmuwpHPZ0PQiHZecL30T0OoPB5nw2m62mOVCmXVk7QX4Yb4E7DrivpYa9OuNy89RhPZus9M dMZXwiO7YalqOFj+i9DyBg==; From: Andrey Drobyshev To: qemu-devel@nongnu.org Cc: michael.roth@amd.com, kkostiuk@redhat.com, marcandre.lureau@redhat.com, andrey.drobyshev@virtuozzo.com, den@virtuozzo.com Subject: [PATCH 1/7] qga/commands-posix: return fsinfo values directly as reported by statvfs Date: Mon, 26 Feb 2024 18:56:36 +0200 Message-Id: <20240226165642.807350-2-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240226165642.807350-1-andrey.drobyshev@virtuozzo.com> References: <20240226165642.807350-1-andrey.drobyshev@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=130.117.225.111; envelope-from=andrey.drobyshev@virtuozzo.com; helo=relay.virtuozzo.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @virtuozzo.com) X-ZM-MESSAGEID: 1708967062938100003 Content-Type: text/plain; charset="utf-8" Since the commit 25b5ff1a86 ("qga: add mountpoint usage info to GuestFilesystemInfo") we have 2 values reported in guest-get-fsinfo: used =3D (f_blocks - f_bfree), total =3D (f_blocks - f_bfree + f_bavail). These calculations might be obscure for the end user and require one to actually get into QGA source to understand how they're obtained. Let's just report the values f_blocks, f_bfree, f_bavail (in bytes) from statvfs() as they are, letting the user decide how to process them further. Originally-by: Yuri Pudgorodskiy Signed-off-by: Andrey Drobyshev --- qga/commands-posix.c | 16 +++++++--------- qga/qapi-schema.json | 11 +++++++---- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 26008db497..752ef509d0 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -1554,8 +1554,7 @@ static GuestFilesystemInfo *build_guest_fsinfo(struct= FsMount *mount, Error **errp) { GuestFilesystemInfo *fs =3D g_malloc0(sizeof(*fs)); - struct statvfs buf; - unsigned long used, nonroot_total, fr_size; + struct statvfs st; char *devpath =3D g_strdup_printf("/sys/dev/block/%u:%u", mount->devmajor, mount->devminor); =20 @@ -1563,15 +1562,14 @@ static GuestFilesystemInfo *build_guest_fsinfo(stru= ct FsMount *mount, fs->type =3D g_strdup(mount->devtype); build_guest_fsinfo_for_device(devpath, fs, errp); =20 - if (statvfs(fs->mountpoint, &buf) =3D=3D 0) { - fr_size =3D buf.f_frsize; - used =3D buf.f_blocks - buf.f_bfree; - nonroot_total =3D used + buf.f_bavail; - fs->used_bytes =3D used * fr_size; - fs->total_bytes =3D nonroot_total * fr_size; + if (statvfs(fs->mountpoint, &st) =3D=3D 0) { + fs->total_bytes =3D st.f_blocks * st.f_frsize; + fs->free_bytes =3D st.f_bfree * st.f_frsize; + fs->avail_bytes =3D st.f_bavail * st.f_frsize; =20 fs->has_total_bytes =3D true; - fs->has_used_bytes =3D true; + fs->has_free_bytes =3D true; + fs->has_avail_bytes =3D true; } =20 g_free(devpath); diff --git a/qga/qapi-schema.json b/qga/qapi-schema.json index b8efe31897..1cce3c1df5 100644 --- a/qga/qapi-schema.json +++ b/qga/qapi-schema.json @@ -1030,9 +1030,12 @@ # # @type: file system type string # -# @used-bytes: file system used bytes (since 3.0) +# @total-bytes: total file system size in bytes (since 8.3) # -# @total-bytes: non-root file system total bytes (since 3.0) +# @free-bytes: amount of free space in file system in bytes (since 8.3) +# +# @avail-bytes: amount of free space in file system for unprivileged +# users in bytes (since 8.3) # # @disk: an array of disk hardware information that the volume lies # on, which may be empty if the disk type is not supported @@ -1041,8 +1044,8 @@ ## { 'struct': 'GuestFilesystemInfo', 'data': {'name': 'str', 'mountpoint': 'str', 'type': 'str', - '*used-bytes': 'uint64', '*total-bytes': 'uint64', - 'disk': ['GuestDiskAddress']} } + '*total-bytes': 'uint64', '*free-bytes': 'uint64', + '*avail-bytes': 'uint64', 'disk': ['GuestDiskAddress']} } =20 ## # @guest-get-fsinfo: --=20 2.39.3