From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D15ABC83F1B for ; Thu, 10 Jul 2025 14:36:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2096E6B007B; Thu, 10 Jul 2025 10:36:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1BA546B0088; Thu, 10 Jul 2025 10:36:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0CFBC6B008A; Thu, 10 Jul 2025 10:36:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id F1B9A6B007B for ; Thu, 10 Jul 2025 10:36:07 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 9C81CB6AFF for ; Thu, 10 Jul 2025 14:36:07 +0000 (UTC) X-FDA: 83648604774.24.104A414 Received: from mail-qv1-f49.google.com (mail-qv1-f49.google.com [209.85.219.49]) by imf01.hostedemail.com (Postfix) with ESMTP id C360F4000E for ; Thu, 10 Jul 2025 14:36:05 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gy+MR4ar; spf=pass (imf01.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.49 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752158165; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=4qJGxOWQ8Up5dWYJdXH7usil2iamd9hTDCPtvQ0awIQ=; b=1yfKV/WcCHliRHFgCkwfOOM7lir4RD1HvzrCXQbX9+Ok2vmsdJY593zooJ8dt0eT1dAn2R wssYWXZKHAsymxaf2pkhbuR0hKfaVLYbpwq1LzEcVcMpfQMSJmUomjbWgBjMGHNNNSvOEi bE4fGlFxS131lPsbAY0WPvqP2ddOsag= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gy+MR4ar; spf=pass (imf01.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.49 as permitted sender) smtp.mailfrom=nphamcs@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752158165; a=rsa-sha256; cv=none; b=mBa5QLwdYZ5rQvyHhG8Tvb1+ZBVETTqn+cJC6fB5ooQNUEh+hdMTv3Xe/zjEvRRjIXE2V2 rQDqib1wnwpvOeO9ZGW5BV4gUkTMlNZUJ2UtCvm1UDW55mPARxHUG8hQWbk2RVlMTjzQhl YNP/SeG/1Vz8mA3BKWHLEJZ2p8O1zb8= Received: by mail-qv1-f49.google.com with SMTP id 6a1803df08f44-6fadb9a0325so8741906d6.2 for ; Thu, 10 Jul 2025 07:36:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752158165; x=1752762965; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=4qJGxOWQ8Up5dWYJdXH7usil2iamd9hTDCPtvQ0awIQ=; b=gy+MR4ar/+pwpuENG430L/MZ6+S1GCsvJTgV2u1x6naJRRDC78ppaUnrjniSF/VNaJ pt29BE/b9mwzB1hNA7qgrnBccdnwLJkEVpefLfRwHDqR/3jJ3xUPtWqOtTEiSfj6o963 AO0RANK7pC7wZ33An102P+JZo5XGu5xGaEzuvJDJK5LN+Hz11c0/cmp4k69Tn1TCXOWB yTr6cAxZ4b9cSZNtwdCd3EOk2I3Sqbo+LYRfaqMOdvUFZs65oiMJeFqFhyvVlCrW6teo 6xEr+LB9xf567NAwpkLAW97aYtpBq/Oyp+P0CECEaAxoK/EWPxHwRMHUV3m/pZK/NzUF aB9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752158165; x=1752762965; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4qJGxOWQ8Up5dWYJdXH7usil2iamd9hTDCPtvQ0awIQ=; b=vzTh3fe46kULqjxatbKSoWFvcV5lLIjgojt3zXxK5K7cMni4p7BWmtg4rkQEZOzji8 3LXTKJdSPXtYMjrV3ZXEztJoluh0I5dJqAa/NpLW8+9WnfpE4bCu8XdoLVxt2XqkVqPI wgXQo/DyeYhX677o3yWupKBfJpnJjgI27sy7xTy5GtmCPKHlwDdJqGAcDRflgUwag74C MxGKD5M5Lg9ADXQp4/2HKQSBXWK0/3PI/4cA9bYrJ8wxh/rXlFQ0IWgV12lnW3uVCxZt Ji/8bNzic8Z7a5QiBkTWQlT2811fn12JiSRWJziJuKyQEP3Bsl8+tc0TV5U+sdyme4Xi VcHA== X-Forwarded-Encrypted: i=1; AJvYcCW4mXALU+MaVRxnQGX4f4UWOTv1A0Sla26d1jUy0gEzfSzI78RIx27h26Ym2LO2O4xeQfypG4EuOA==@kvack.org X-Gm-Message-State: AOJu0YzqhldG3C6jmCUJVVkFkpzKtHMlCpAr0zIK8acpyBGw86Xf1UjK jHadX+ddnYS1u4jcHsu4ENumbJKXm5so+hQ/J9qFHKpcEQ79LD+J27fRV/WSfeNX48OpRauI7LZ thvCPgU1Fyrk4APu1EbA0hmLmQLXU5p8= X-Gm-Gg: ASbGnctNRfr8+ha3DFhjMrGH8du5MxtcStoYeodvAh1+eugI0okGwnCSyLR6yy9K/yA eBya55yv0hGgjriYJL/3iRRuXqYMiENqV4QNmsvIMobRNVbEfUGjJgvl2/OetCBFNsl3zkT8rNc t6cyKHnNWb4vuw3+RSWhPrG9/lkvkOTc7ycrfWSE6XkuI= X-Google-Smtp-Source: AGHT+IEKim1PUIFElOcNyHSqrLn01w9htemvtx7RLvrE5/uf9zQTKhdPq+4LhB5J8wrFv+2K0gTROANsR4kOkYJeXQU= X-Received: by 2002:ad4:5f0e:0:b0:701:775:70b8 with SMTP id 6a1803df08f44-7049505d74emr63722756d6.38.1752158164505; Thu, 10 Jul 2025 07:36:04 -0700 (PDT) MIME-Version: 1.0 References: <20250709174657.6916-1-suresh.k.chandrappa@gmail.com> In-Reply-To: <20250709174657.6916-1-suresh.k.chandrappa@gmail.com> From: Nhat Pham Date: Thu, 10 Jul 2025 07:35:53 -0700 X-Gm-Features: Ac12FXyoLktlmX39quFWyEEFVsEtk0kX_j9HtNIamMLSlCQffuIUqfEi_lx_asM Message-ID: Subject: Re: [PATCH v3] selftests: cachestat: add tests for mmap Refactor and enhance mmap test for cachestat validation To: Suresh K C Cc: hannes@cmpxchg.org, joshua.hahnjy@gmail.com, shuah@kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: C360F4000E X-Stat-Signature: yunmhcmn9t71o671bsgsofq8k7jyra53 X-Rspam-User: X-Rspamd-Server: rspam07 X-HE-Tag: 1752158165-237317 X-HE-Meta: U2FsdGVkX188ElC+IKEG/1vQIte401RKREJtg5Oc6lJ1Nn1ALzT5ONmPSpfhg1POCp4UlvZPZlfo4C5xP2Q9+fBv1WAC1PE5koEBxPz8+HKzAewvp5YzjPvnnKHcC5V9YG3VaT/0lT/++7UT7s2ViELU9JGEM96LjHQFOza4KkAD2l3XxxpET92czY7wTAHEJiJguMWrpv0ltyVTCXHaHY7Ef8RCSkf3TE6JysjVhvbOxWVR90uUTeQldnbGBrC/sNCfZxBPTFhx0zp2uhEzW37LjD0wLkw9IVs+64HUoUbVBQ66cdpL9AUrAUzihP1rfBP7RafEqjwDtCPoBiIG5uOfnQIPGPFoDl8FgqTj8jGaUaD6aAA+kjyZuwlJz8qBEh75Lmf3qBwFRUGpYRrOswaPYsAdN79klwRZSWc/hPu3tEKVJKmR64rgM5fdDEG0cGdwvzKWsTrTD2PGcc0+2QH/XZ3tfGNuX2PKVI7Sdi4E6MjFG+F3vpAg7HrjWTUG5NvvOzcH/rXAyU/PcjDkSgfblTkMBI4eyaX4LUGkuM4Nh+cyn5VE2G+HxUwgHaIg1F8M8uO3KEcUOsy+N41eg/oFCiloP2y6ykjhe/krHv+ZrI+GnL4Cz7CL5PMSgcomQBlJV28tN/rN17wcgMKzl/oIeLCvsR7PQncc9UmYV96gu4hXGVlilFLcWwJny/dcEVMu8/s21Aa0VGED7q5Z6Eaz+eis1XNkfj7NTUh1I+AHbLzvRBHKZicYyuLcgxVrYBRSxQeTMRwzPi+wVdRHyys72e2M4VBeFnByESzHYC2KxxsCg481inR7L8qsDoyyMe1sTz48/5JizEU3WoMpGpcyRuBqzW+Kt1IphirAB+tCo6LeflxoEoDPNHS5NXAIHJr+kT4EZqKE28oL/Kz0LDzqXF5BWKedR3WiI3wJ5vzFDdYp8m1uVSRVZ3mTIsXDqUGFbGwYu1Bb6K2c7oT XWx7bnxM LpCe9P8jwM+vJ1DWZSXmE6KrTLnfx3tX63LMrbVChqHeqKvnK1xACqPPiwB17ICa0ovYqjOJ12QThowZZc6Yg+JXJhOuvNC2tuJe9I3a/fPI9GsFAW5uN9LormHiXi0wz3UcNMZYxaCd9NspVglg8VZXPPEgLO7cLOerUSfUGKPpCfdvizGv2La4n5c8K2ecU4Vjd5/augVCDCVnkvnD53tyUXFzmxrtzhtiu6cRA8h0BjzsesYUPR+Ut86hSVrz1dlru5dzK05od0yXGPBLiB0ruj266VaFa0a4QbYW3Z52mXzzUmb1OiRgok8Thp9+3V1Vj0NOcsMTpzAR5z1mcVaItyICmlC9cPFNKV5gCCKoImNdcFsE3azB3E5HAbqzdzlrEJlSaIAzM8jHJn2nY+/UgaF7705z3hRsPKQN0nlaWLq+lFLes6NnDfyLV0taHMhIlo5iKYEcIaAJISR7zQ1EXhPhd+nQexYD45wBAEeoQ5KQ= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, Jul 9, 2025 at 10:47=E2=80=AFAM Suresh K C wrote: > > From: Suresh K C > > This patch merges the previous two patches into a single, > cohesive test case that verifies cachestat behavior with memory-mapped fi= les using mmap(). > It also refactors the test logic to reduce redundancy, improve error repo= rting, and clarify failure messages for both shmem and mmap file types. > > Changes since v2: > > - Merged the two patches into one as suggested > - Improved error messages for better clarity > > Tested on x86_64 with default kernel config. > > Signed-off-by: Suresh K C > --- > .../selftests/cachestat/test_cachestat.c | 66 +++++++++++++++---- > 1 file changed, 55 insertions(+), 11 deletions(-) > > diff --git a/tools/testing/selftests/cachestat/test_cachestat.c b/tools/t= esting/selftests/cachestat/test_cachestat.c > index 632ab44737ec..18188d7c639e 100644 > --- a/tools/testing/selftests/cachestat/test_cachestat.c > +++ b/tools/testing/selftests/cachestat/test_cachestat.c > @@ -33,6 +33,11 @@ void print_cachestat(struct cachestat *cs) > cs->nr_evicted, cs->nr_recently_evicted); > } > > +enum file_type { > + FILE_MMAP, > + FILE_SHMEM > +}; > + > bool write_exactly(int fd, size_t filesize) > { > int random_fd =3D open("/dev/urandom", O_RDONLY); > @@ -201,8 +206,19 @@ static int test_cachestat(const char *filename, bool= write_random, bool create, > out: > return ret; > } > +const char* file_type_str(enum file_type type) { > + switch (type) { > + case FILE_SHMEM: > + return "shmem"; > + case FILE_MMAP: > + return "mmap"; > + default: > + return "unknown"; > + } > +} > > -bool test_cachestat_shmem(void) > + > +bool run_cachestat_test(enum file_type type) > { > size_t PS =3D sysconf(_SC_PAGESIZE); > size_t filesize =3D PS * 512 * 2; /* 2 2MB huge pages */ > @@ -212,27 +228,49 @@ bool test_cachestat_shmem(void) > char *filename =3D "tmpshmcstat"; > struct cachestat cs; > bool ret =3D true; > + int fd; > unsigned long num_pages =3D compute_len / PS; > - int fd =3D shm_open(filename, O_CREAT | O_RDWR, 0600); > + if (type =3D=3D FILE_SHMEM) > + fd =3D shm_open(filename, O_CREAT | O_RDWR, 0600); > + else > + fd =3D open(filename, O_RDWR | O_CREAT | O_TRUNC, 0666); > > if (fd < 0) { > - ksft_print_msg("Unable to create shmem file.\n"); > + ksft_print_msg("Unable to create %s file.\n",file_type_st= r(type)); > ret =3D false; > goto out; > } > > if (ftruncate(fd, filesize)) { > - ksft_print_msg("Unable to truncate shmem file.\n"); > + ksft_print_msg("Unable to truncate %s file.\n",file_type_= str(type)); > ret =3D false; > goto close_fd; > } > - > - if (!write_exactly(fd, filesize)) { > - ksft_print_msg("Unable to write to shmem file.\n"); > - ret =3D false; > - goto close_fd; > + switch (type){ > + case FILE_SHMEM: > + if (!write_exactly(fd, filesize)) { > + ksft_print_msg("Unable to write to file.\= n"); > + ret =3D false; > + goto close_fd; > + } > + break; > + case FILE_MMAP: > + char *map =3D mmap(NULL, filesize, PROT_READ | PR= OT_WRITE, MAP_SHARED, fd, 0); > + if (map =3D=3D MAP_FAILED) { > + ksft_print_msg("mmap failed.\n"); > + ret =3D false; > + goto close_fd; > + } > + for (int i =3D 0; i < filesize; i++) { > + map[i] =3D 'A'; > + } > + break; > + default: > + ksft_print_msg("Unsupported file type.\n"); > + ret =3D false; > + goto close_fd; > + break; > } > - > syscall_ret =3D syscall(__NR_cachestat, fd, &cs_range, &cs, 0); > > if (syscall_ret) { > @@ -308,12 +346,18 @@ int main(void) > break; > } > > - if (test_cachestat_shmem()) > + if (run_cachestat_test(FILE_SHMEM)) > ksft_test_result_pass("cachestat works with a shmem file\= n"); > else { > ksft_test_result_fail("cachestat fails with a shmem file\= n"); > ret =3D 1; > } > > + if (run_cachestat_test(FILE_MMAP)) > + ksft_test_result_pass("cachestat works with a mmap file\n= "); > + else { > + ksft_test_result_fail("cachestat fails with a mmap file\n= "); > + ret =3D 1; > + } > return ret; > } > -- > 2.43.0 > Code LGTM, and the test passed on my system (x86-64 too though). FWIW: Tested-by: Nhat Pham Acked-by: Nhat Pham Thanks for the test contribution, Suresh! And thanks for the review help, Joshua :)