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 34309C77B7F for ; Fri, 27 Jun 2025 16:41:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A0ADC6B00B5; Fri, 27 Jun 2025 12:41:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9BC086B00BE; Fri, 27 Jun 2025 12:41:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8AA7C6B00C0; Fri, 27 Jun 2025 12:41:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 78C576B00B5 for ; Fri, 27 Jun 2025 12:41:55 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 2E3F71A025C for ; Fri, 27 Jun 2025 16:41:55 +0000 (UTC) X-FDA: 83601747390.07.F2C4A95 Received: from mail-qv1-f51.google.com (mail-qv1-f51.google.com [209.85.219.51]) by imf04.hostedemail.com (Postfix) with ESMTP id 5910340008 for ; Fri, 27 Jun 2025 16:41:53 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FDLWI5o0; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.51 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751042513; a=rsa-sha256; cv=none; b=ILlBkopkbOLkDKxB++/rK8mbot0rjx+IWTnz2wd3mQmilUMD+1paZvmi9J++5lXf5maAHg 1IIgEwy3mVuDAkkcEuL+0SLX2k2ZGtz0wJl5kcjy7PPxfvj6cvUSejXp1CPBos8MSk4BKP VLrPYUkJ3cZHOPSMfhzyyD8XuLF5Vc8= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FDLWI5o0; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.51 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751042513; 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=fyipC4Ey3fSMiqKcNDa+7P48q0NzX69aJ2eDYPmsvlc=; b=hDQAt8KmZc/VyY0ZZCR560l+BUr97uJ3g2xOXhj5Sjb8cYldWSZZ56RX9CtpNMNmlDks01 7a+zxkT+hq5uQfljN5aE7KBiiW2r2UkWtBS6RO88YkLYJ5D0I7cCuzpKI8+Y8f5yY+521m 80TC0G6+k8liVUzhzP9FtXkjhpfeJqk= Received: by mail-qv1-f51.google.com with SMTP id 6a1803df08f44-6fd1b2a57a0so20557936d6.1 for ; Fri, 27 Jun 2025 09:41:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751042512; x=1751647312; 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=fyipC4Ey3fSMiqKcNDa+7P48q0NzX69aJ2eDYPmsvlc=; b=FDLWI5o0pEwM9xHQJw3BmdoFCtQwenlcOFvKPnokZ3DS0oAYuF2TtLl32/btx5cPbK auvZUx+sdrgDNLiQriNSLZsUqjtdnGO38TxbR6gmxmxGGPzTd4Kd51kIELg0uH8aaNwb 1iZJztcQZfbVWVJ7eBbrqHxtue7O1od2cdl++3gx+9H8qfoOrngBiVtsWIPRI3RkueYr 86P55HXiNAyOn9aeci2PelK7Kjc0eA1v4vmvbGeqcjzTiElS6Gzo3QOmZg48tGv5rroI mGdi8qb9DJvjSbmblz21yJWrC6nE0sFqJ0fqlcMAc7RqB2KbYRKp2qUYWOXXzztctoYH goQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751042512; x=1751647312; 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=fyipC4Ey3fSMiqKcNDa+7P48q0NzX69aJ2eDYPmsvlc=; b=xUkUXFmO9QVPFRpBUsC5kwV92TYYhpeDClIPKZsUIwHcp1YPq6ZCkXNM0pBJuUR5vR kKhGPzRRFOaWhfTGjFKDE/m69vuplNZ/0qs8Ue1dEVlPr7q2er3cDHtn0Gii0alLJSqY OgsktLn/4DBoxPqa7nksQpd3S4MbHwsgzFXmbsZWbfosYxBQALIhsdGHSiAO1FfyIjU7 1F6TZAVsPLz75UzqIvyjGx9oUmfWpkaphuZHcSi/6X7P+8ajWW3bLW/wGjKFog0RrS++ XjC0iOTX6+oLkPkN3AyF24GmA4KLDkrxsWojHlO3d3BOKeVI+Ct9pibeglWjeZ9nuY2t C6Lg== X-Forwarded-Encrypted: i=1; AJvYcCU/I04f+cfN07vXAfuIqm35pnDMqsoSlnNuXnWVR4PrIl27g+DCzIS3wYKcSbEMHB6kpawI08EB1g==@kvack.org X-Gm-Message-State: AOJu0Yxoax0rqWKmz2mxMxr9Z9sVF3urDzC1vKREA7RtD6trYLzQlZsM 9lO5RGVxl9BBaBnU/75V+e4hM4QTj8VWdRJyWkfdxC57u7qwpMPn69SoWa0wEz+mlTVR8i4VAZ1 hvttA1m5eV5ngBc9XpN8SzLngpTu9pcc= X-Gm-Gg: ASbGncuPaFxymaVDF95aTYnQaHX2vF+YtBmgz6PFOorisw5+vWxhRIRS/e/AJo+5G+w 8s0+1W1BS3IpVvFY5oBaqfqh0s+Lp5VbBHJGFFlcS4k9Ncc1S2RGlaXbGmBnhfy/hyxZw4czvif s5pTgCS/bnExA98TSwuldXu/ZZbObt6IOwA6NvyqRAIsHt X-Google-Smtp-Source: AGHT+IGiUfVfyJ26Bx4wl5kfNYZjoCTkcL0cHSajEsErrJvIE+yC5lhtciLge9rl2SK0bCUfyIYVL/jMRdpJ3J2gBFc= X-Received: by 2002:a05:6214:2624:b0:6fa:b9e9:e799 with SMTP id 6a1803df08f44-70002ee7f49mr55922566d6.24.1751042512252; Fri, 27 Jun 2025 09:41:52 -0700 (PDT) MIME-Version: 1.0 References: <20250611180936.12886-1-suresh.k.chandrappa@gmail.com> In-Reply-To: From: Nhat Pham Date: Fri, 27 Jun 2025 09:41:40 -0700 X-Gm-Features: Ac12FXxvXlWgt_fhT6-D6650tZx56zP0Ru5h2FBmanswINTMW2ehWBPl7bvd2YI Message-ID: Subject: Re: [PATCH v2] selftests: cachestat: Refactor test to remove duplication To: Suresh Chandrappa Cc: hannes@cmpxchg.org, 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-Rspam-User: X-Rspamd-Queue-Id: 5910340008 X-Rspamd-Server: rspam10 X-Stat-Signature: r6oiggqboqojncw1gn1ehoccubkems11 X-HE-Tag: 1751042513-414917 X-HE-Meta: U2FsdGVkX19eUNwxcDstbCx1HC5/QXoTlOnPU71HHpKR6GikJrSIWVLmgzcLClCrRZGSqddePp/qrl+1FGE2pKrQWAEQZjZoqeq1A4KnMM8KQTJgDwL0jnO6li1pnLRByF3nPXFjwyLwGQy//M3e1c9aihOJNIPYT32S9MKyKrQy7MBVPpUm1EVyWXmrYipW7eguCM3akAVLK8QfAvo4+vj59t/vyX4IoTggbcXndH5uL+TmMQ4TM9pf/quvRTzYHmYkWa9GZafJFyntT+5h6EyP4pQvNjgVkNyYMO8tsEqHDAFO41vLNPcptIC3AWb9Jhfs9YfYTD+dxrddtlLX+JQRPFeW59riVqHQJJsrPdpOfaZCXzpJz2cdaYBhdfNqVMGSHkCCmXZLiVw0KKuQHrLWx4jNbC+lSPtI3uU8zRLOdAgiQ4ETDRojzroK+CgtDQ6yhhTyMDcL6qRzc8Z2n+ejfDFoQyaI+DGu9B7aK90WSWsCytdY/eoeaWwoEF7c9maYfKafxbnMfb8pQmTu508ywBp3Jd8p0nRGVR5idfm0rbJe4tOl6+OhjyOZ/cKbFoVG3wZFTvl604NA0W9y5zp3chJY8tvx6xsYKSyP4drryEzpq68oHsJImO4jbFBOp1oAAhTpyw3mkO5pRNE1YlfotFBCssxwbgKPATpNQVjt7ZrxG+hk9TrkLMPLQB85KVYzTDcaZwWtzMeN0b/LtygpKfyDK4evErBVgUsqQx4nWfwHABb+cq97CZa8yOcBdmKDchqUKEJ67v2SdzvSAR16l3SZK6ao/WCWl/t5lC5UM9gVQ7kD7sDesaXLklRVM7kHU/FFrY62JwGG89nrwe8MegQnUEkhKpl/iqCDrBfxwDm9SpmyZep1OQ03OBH3DkAK4+OQ39iOb9AYB0NsEmeH0S+yHhudSJSpD2sMNVInVuV58i6ub8jnxnS1ein0ILYS12oRPkc+wHXvIp0 Nj5P2V0M U39/tNHncdtWxO8Ztu33YXljaHFcaEXHrVFHC4OzCjkE6Lu9RJLVYpfbLbWXCb3TdUS+iqxX3iEocsqPNt68wtnK96uCvKgipBe1ocX259T5dQyE4TRG+OvqyLKOawQ932fNe4iIBR/1OZDh6kgogzi5vw2It+JT5xq4+NxI4BEMhu42LAWmpIoIDzRgEGOyxuj3wvJ46DStgYJM75Uy9YFHfDYTZeraJ2AkxSR8N1iJZYxd5jHzHJErjVD9k1rVXDnnhBSAdRkdn4rs1hl+7qn1uZ51fZqgGKvTvT//swx2Wo07yVAnOBADDycfgrIOuVwabFWk5rebZOrxqR5L7+k4GljZw6uGfaJOr8PAHoax9cU9jlXf1cKiP52SLRZMEyq0v30gIv4pfvvfFlViZTXgMuA+Lkog4E5voJ854LUf30o/85uLOFgYr+dB35xmGMQBS 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 Tue, Jun 24, 2025 at 9:58=E2=80=AFPM Suresh Chandrappa wrote: > > Hi @nphamcs > Can you please check the modified change Is this supposed to be on top of the earlier patch you sent out? In that case, you should send both together as a patch series. > > Thanks > Suresh K C > > > On Wed, 11 Jun 2025, 23:39 Suresh K C, wr= ote: >> >> From: Suresh K C >> >> Refactored the mmap and shmem test logic into a common function >> to reduce code duplication and improve maintainability >> >> Changes in v2: >> Refactored mmap and shmem tests into a common function >> Renamed test function to run_cachestat_test() >> Removed test for /proc/cpuinfo as a general /proc test case already = exists >> >> Signed-off-by: Suresh K C >> --- >> .../selftests/cachestat/test_cachestat.c | 97 ++++++------------- >> 1 file changed, 30 insertions(+), 67 deletions(-) >> >> diff --git a/tools/testing/selftests/cachestat/test_cachestat.c b/tools/= testing/selftests/cachestat/test_cachestat.c >> index 81e7f6dd2279..7c2f64175943 100644 >> --- a/tools/testing/selftests/cachestat/test_cachestat.c >> +++ b/tools/testing/selftests/cachestat/test_cachestat.c >> @@ -22,7 +22,7 @@ >> >> static const char * const dev_files[] =3D { >> "/dev/zero", "/dev/null", "/dev/urandom", >> - "/proc/version","/proc/cpuinfo","/proc" >> + "/proc/version","/proc" So you removed one file that you added in an earlier patch, right? Then why bother adding it in the first place...? Can you either: 1. Send the two patch together as a series. In the first patch, do not add /proc/cpuinfo. or 2. Squash them into a single patch. I'll let you decide if this is worth it= . >> }; >> >> void print_cachestat(struct cachestat *cs) >> @@ -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); >> @@ -202,66 +207,8 @@ static int test_cachestat(const char *filename, boo= l write_random, bool create, >> return ret; >> } >> >> -bool test_cachestat_mmap(void){ >> - >> - size_t PS =3D sysconf(_SC_PAGESIZE); >> - size_t filesize =3D PS * 512 * 2;; >> - int syscall_ret; >> - size_t compute_len =3D PS * 512; >> - struct cachestat_range cs_range =3D { PS, compute_len }; >> - char *filename =3D "tmpshmcstat"; >> - unsigned long num_pages =3D compute_len / PS; >> - struct cachestat cs; >> - bool ret =3D true; >> - int fd =3D open(filename, O_RDWR | O_CREAT | O_TRUNC, 0666); >> - if (fd < 0) { >> - ksft_print_msg("Unable to create mmap file.\n"); >> - ret =3D false; >> - goto out; >> - } >> - if (ftruncate(fd, filesize)) { >> - ksft_print_msg("Unable to truncate mmap file.\n"); >> - ret =3D false; >> - goto close_fd; >> - } >> - if (!write_exactly(fd, filesize)) { >> - ksft_print_msg("Unable to write to mmap file.\n"); >> - ret =3D false; >> - goto close_fd; >> - } >> - char *map =3D mmap(NULL, filesize, PROT_READ | PROT_WRITE, MAP_S= HARED, 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'; >> - } >> - map[filesize - 1] =3D 'X'; >> - >> - syscall_ret =3D syscall(__NR_cachestat, fd, &cs_range, &cs, 0); >> - >> - if (syscall_ret) { >> - ksft_print_msg("Cachestat returned non-zero.\n"); >> - ret =3D false; >> - } else { >> - print_cachestat(&cs); >> - if (cs.nr_cache + cs.nr_evicted !=3D num_pages) { >> - ksft_print_msg("Total number of cached and evict= ed pages is off.\n"); >> - ret =3D false; >> - } >> - } >> - >> -close_fd: >> - close(fd); >> - unlink(filename); >> -out: >> - return ret; >> -} >> >> -bool test_cachestat_shmem(void) >> +bool run_cachestat_test(enum file_type type) Can you just call this function test_cachestat(enum file_type type) ? >> { >> size_t PS =3D sysconf(_SC_PAGESIZE); >> size_t filesize =3D PS * 512 * 2; /* 2 2MB huge pages */ >> @@ -271,27 +218,43 @@ 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 file.\n"); >> ret =3D false; >> goto out; >> } >> >> if (ftruncate(fd, filesize)) { >> - ksft_print_msg("Unable to truncate shmem file.\n"); >> + ksft_print_msg("Unable to truncate file.\n"); >> ret =3D false; >> goto close_fd; >> } >> >> if (!write_exactly(fd, filesize)) { >> - ksft_print_msg("Unable to write to shmem file.\n"); >> + ksft_print_msg("Unable to write to file.\n"); >> ret =3D false; >> goto close_fd; >> } >> >> + if (type =3D=3D FILE_MMAP){ >> + char *map =3D mmap(NULL, filesize, PROT_READ | PROT_WRIT= E, 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'; >> + } >> + map[filesize - 1] =3D 'X'; >> + } >> syscall_ret =3D syscall(__NR_cachestat, fd, &cs_range, &cs, 0); >> >> if (syscall_ret) { >> @@ -333,7 +296,7 @@ int main(void) >> ret =3D 1; >> } >> >> - for (int i =3D 0; i < 6; i++) { >> + for (int i =3D 0; i < 5; i++) { >> const char *dev_filename =3D dev_files[i]; >> >> if (test_cachestat(dev_filename, false, false, false, >> @@ -367,14 +330,14 @@ 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 (test_cachestat_mmap()) >> + 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"); >> -- >> 2.43.0 >>