From nobody Fri Dec 12 14:05:30 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1765293853; cv=none; d=zohomail.com; s=zohoarc; b=UI9VdTKxE0Ghi0kcN1Xr2ncT96+5KLYnRM1LQmwbdrPaZyj6uXO4nhq10Bche6YHL3R0G/yRYxNm9gM6815QI6xS4k0O8uc0bjnvQ7ukY6iQ0blWxAnrYH8CyqCgxfvgDRMYlhBsq97biGsGE3WEFziuV3hdcT67InaThT9PaSU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765293853; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=ANMVn1JdFpu1xtKoMUVfrtHgMJVheOWXvaMQ6Xcrsoo=; b=mL5SWg5JTwjqo6KqiN5fpOUPy2pC1/3Lbp5Cr+Ak7oP8FUwfn/8Gpx7xwMfZaeyfYZRjvFEBQMKEMrA84GqAjMn+QCK7BwA48YiOC3MRi2jDK7fTd3P1kk74rZ4Hn6sy+9TFRlZ7X/fI+8lZsKoO1J0gzTNS16n/8U8TmkdMbyA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1765293853506840.1073344437681; Tue, 9 Dec 2025 07:24:13 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id AA17841941; Tue, 9 Dec 2025 10:24:12 -0500 (EST) Received: from [172.19.199.80] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 8A30B41AD2; Tue, 9 Dec 2025 10:23:21 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 02B1E4189F; Tue, 9 Dec 2025 10:03:51 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id EA7CC41998 for ; Tue, 9 Dec 2025 10:03:50 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-331-Von1RSgVPp6PCET5b93HbQ-1; Tue, 09 Dec 2025 10:03:35 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E71CD19560A1 for ; Tue, 9 Dec 2025 15:03:34 +0000 (UTC) Received: from orkuz (unknown [10.44.33.57]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 4C36A30001A5 for ; Tue, 9 Dec 2025 15:03:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765292630; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ANMVn1JdFpu1xtKoMUVfrtHgMJVheOWXvaMQ6Xcrsoo=; b=UzUMwEHagME4e7H9tFskGrL7FzWGN/aSIH5HXeO8UFWxAtx/l/RDwCuyfpREsXJSvQeo+7 G/LG4yR0jz0Q6L7D6nNKg633i9xS3/uFPb8AfL6oFvBdY0bxRdNJ6TJfsMshebaIwuuvPC JQiVBHoq5n0XfGYo0m5k5Js/HzUiDfo= X-MC-Unique: Von1RSgVPp6PCET5b93HbQ-1 X-Mimecast-MFC-AGG-ID: Von1RSgVPp6PCET5b93HbQ_1765292615 To: devel@lists.libvirt.org Subject: [PATCH 1/4] tests: Test virFileIsSharedFSOverride Date: Tue, 9 Dec 2025 16:02:27 +0100 Message-ID: <2e25a6621e93a6568fd131b11b0a062419297d3a.1765292471.git.jdenemar@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: h_TSOMckF0VWSIe-YO3Y_-GtcODS1tUc6oWarCrmgJk_1765292615 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: MJQ6RZ3TMSXCA22W4X423QB2UOL23OJF X-Message-ID-Hash: MJQ6RZ3TMSXCA22W4X423QB2UOL23OJF X-MailFrom: jdenemar@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: <> List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Jiri Denemark via Devel Reply-To: Jiri Denemark X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1765293854942158500 Content-Type: text/plain; charset="utf-8" From: Jiri Denemark Technically virFileIsSharedFSOverride is available on any OS, but we need a mocked realpath() to test it. Because the virfilemock library also mocks statfs() which is only available on Linux, we don't even try to load the library anywhere else. Thus we need to skip testing virFileIsSharedFSOverride on non-Linux too. Signed-off-by: Jiri Denemark --- tests/virfiletest.c | 69 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/tests/virfiletest.c b/tests/virfiletest.c index e05925a321..ccd76a3fac 100644 --- a/tests/virfiletest.c +++ b/tests/virfiletest.c @@ -329,6 +329,55 @@ testFileIsSharedFSType(const void *opaque G_GNUC_UNUSE= D) } =20 =20 +static const char *shared_filesystems[] =3D { + "/run/user/501/gvfs", + "/nfs", + "/gluster", + "/ceph/multi", + "/gpfs/data/blaf", + "/quobyte", + NULL, +}; + +static int +testFileIsSharedFSOverride(const void *opaque G_GNUC_UNUSED) +{ +#ifndef __linux__ + return EXIT_AM_SKIP; +#else + const struct testFileIsSharedFSType *data =3D opaque; + g_autofree char *mtabFile =3D NULL; + bool actual; + int ret =3D -1; + + /* mtab is used by mocked realpath to decide whether a given path exis= ts */ + mtabFile =3D g_strdup_printf(abs_srcdir "/virfiledata/%s", data->mtabF= ile); + + if (!g_setenv("LIBVIRT_MTAB", mtabFile, true)) { + fprintf(stderr, "Unable to set env variable\n"); + goto cleanup; + } + + actual =3D virFileIsSharedFSOverride(data->filename, + (char * const *) shared_filesystems= ); + + if (actual !=3D data->expected) { + fprintf(stderr, "FS of '%s' is %s. Expected: %s\n", + data->filename, + actual ? "shared" : "not shared", + data->expected ? "shared" : "not shared"); + goto cleanup; + } + + ret =3D 0; + + cleanup: + g_unsetenv("LIBVIRT_MTAB"); + return ret; +#endif +} + + static int mymain(void) { @@ -439,6 +488,26 @@ mymain(void) DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/gpfs/data", true); DO_TEST_FILE_IS_SHARED_FS_TYPE("mounts3.txt", "/quobyte", true); =20 +#define DO_TEST_FILE_IS_SHARED_FS_OVERRIDE(mtab, file, exp) \ + do { \ + struct testFileIsSharedFSType data =3D { \ + .mtabFile =3D mtab, .filename =3D file, .expected =3D exp \ + }; \ + if (virTestRun(virTestCounterNext(), testFileIsSharedFSOverride, &= data) < 0) \ + ret =3D -1; \ + } while (0) + + virTestCounterReset("testFileIsSharedFSOverride "); + DO_TEST_FILE_IS_SHARED_FS_OVERRIDE("mounts2.txt", "/boot/vmlinuz", fal= se); + DO_TEST_FILE_IS_SHARED_FS_OVERRIDE("mounts2.txt", "/run/user/501/gvfs/= some/file", true); + DO_TEST_FILE_IS_SHARED_FS_OVERRIDE("mounts3.txt", "/nfs/file", true); + DO_TEST_FILE_IS_SHARED_FS_OVERRIDE("mounts3.txt", "/gluster/file", tru= e); + DO_TEST_FILE_IS_SHARED_FS_OVERRIDE("mounts3.txt", "/some/symlink/file"= , true); + DO_TEST_FILE_IS_SHARED_FS_OVERRIDE("mounts3.txt", "/ceph/file", false); + DO_TEST_FILE_IS_SHARED_FS_OVERRIDE("mounts3.txt", "/ceph/multi/file", = true); + DO_TEST_FILE_IS_SHARED_FS_OVERRIDE("mounts3.txt", "/gpfs/data", false); + DO_TEST_FILE_IS_SHARED_FS_OVERRIDE("mounts3.txt", "/quobyte", true); + return ret !=3D 0 ? EXIT_FAILURE : EXIT_SUCCESS; } =20 --=20 2.52.0