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 8DE53C8302F for ; Mon, 30 Jun 2025 22:30:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1CE638D0003; Mon, 30 Jun 2025 18:30:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1A5E08D0002; Mon, 30 Jun 2025 18:30:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0E3268D0003; Mon, 30 Jun 2025 18:30:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id F22AD8D0002 for ; Mon, 30 Jun 2025 18:30:46 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 5DB9456F30 for ; Mon, 30 Jun 2025 22:30:46 +0000 (UTC) X-FDA: 83613512892.22.82ACF0C Received: from mail-qv1-f50.google.com (mail-qv1-f50.google.com [209.85.219.50]) by imf19.hostedemail.com (Postfix) with ESMTP id 826A31A0009 for ; Mon, 30 Jun 2025 22:30:44 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fRrhSJvx; spf=pass (imf19.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.50 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=1751322644; 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=ai192T8zNk4t68iyaDXYtFbddTpkDSzsYqRpmCFuNrY=; b=46b2+ipN2/K+zBIQCUouqpjWUxn9jn+AyxNKoa18emehGm8fL2JfFfKoxILgHub3eeUuMJ XR6pg77I1uZ5AA8Yp635gRjpAKiH6L0j2ipKpnNPs+4MdgAM+sUnVrfDGpsnqCCPaVbwaQ tPo5BpF07s48luCf5aSTUang3GveWYI= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=fRrhSJvx; spf=pass (imf19.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.50 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=1751322644; a=rsa-sha256; cv=none; b=pcyIVHoy0rkj314dI5X8z083UnzdNOl6f/yCJyV++gjjFpwdY+rgvEwjOUJ5nf1WB2ZZ2a xbXMn6PJPP67Z+VgwEYSPqsFcKEVJOyUp+noF4+wDA3oFiEV6JYTYqFEArda2ESy1+fyc4 4efwpaosDG/IgYNQ8gdjZuJGP0kTHRI= Received: by mail-qv1-f50.google.com with SMTP id 6a1803df08f44-6facc3b9559so36421276d6.0 for ; Mon, 30 Jun 2025 15:30:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751322643; x=1751927443; 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=ai192T8zNk4t68iyaDXYtFbddTpkDSzsYqRpmCFuNrY=; b=fRrhSJvxOx0UZ75XQL44fZiPV/gLVVAc0uhetRGAZViz/jwoFZ2BFyWUj0m+lYwe58 jvfwvj62GGs3MAcRgD+vosXmZSP6ZPYNooow5HKqzrlDeUOetvgxaWm9NtuzxILlTMBe rBURzpojuPLMOl1xwn3M0yZYcQQRIQCTAsGtRL2RvCXLMGbdEniTwlEpnQ8HHKo4OskO 3Gck2Mlr6lhOsg6JgrLy+KFL9+Od39WwqMxfp+r50EvHTB3EgjAl4NoE31JRDpX2HLUK YvkaK9fQxPdJrpWo5exHefzOoA+poifes0El2YwDsQaIqCEhqbZ2oxabDrtxpWil4WIV yTzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751322643; x=1751927443; 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=ai192T8zNk4t68iyaDXYtFbddTpkDSzsYqRpmCFuNrY=; b=HT/qcst/zkC6zrQIJkU51jPWiUVpAjYhRSLkYLUnv5C2ii3KGAy8+LgdmZlM9Zmt2S ju9+TFhWUqRpizvU3Ju+IO7/zeh/GlD148e4XGfDTqr2dZfAc7ZmHy4NnfXbT8njok5r iJQAa0107m979K3JNrovvFAIPPZ9nrtkuHsH3Si9+EgYNnurkE30AxmVrDpGms/wf5UL QKSPQ25EOUSaya+4FHENhlY0I+vyPZrVdcyOXYZ52SIXsaCnpDUBanyYLWe7UVfvQ7Wp 0gDAsVpPlFvhY+xrz4Uwbw7L7mZP7gcCu8mOQZ30cNlCjjwUp1d2tKMK2H67tVn+L11U gkdQ== X-Forwarded-Encrypted: i=1; AJvYcCVLUwMMy6gF0sIFSfD1HpqCI9tFhyU+v9FKho9geEgHE4cRCXJA3z6dLiW8Ssb6s1jyUSP+pYLZ1w==@kvack.org X-Gm-Message-State: AOJu0YwBySfEvhq4ZRvkp+dsE6YCTyUBKw6oqt6JVzgJT/NxOvHEaFHd HhrMYhQGH9d5kwD6T7JaUGMlq1pPbnUUGdGnsNEiDWM+i8Ig3mPDIXfGjZbdzhutGzPS4VfVzrZ f6DAQcMA8K8e1laJIZaIxQZK97N+0icQ= X-Gm-Gg: ASbGncsIZxK2mpj/QHM+R739PUvg0WhbpLK2HUWmJTTEzNod+3oCRkQ+x0EN++Yp4VW kRjgmBoG4/cx4GaRKCUvC4hqXmWKACoj8XQghqgOUbgtmIPxpfOQSpiHYWBrdIKxTmNFw1ij6lX OUndvafn9o7OFv8zKXFrKhAevD949ZhLH0quNIrvBRTS0= X-Google-Smtp-Source: AGHT+IG14HrVwN4QZgDMflUz/jurLDXjApULHqz/YtoTmowsLIAXSuzPC2YLeQElYTxerNAAglKDOGJaDVlm1AVCvP0= X-Received: by 2002:a05:6214:5c04:b0:6fa:c054:1628 with SMTP id 6a1803df08f44-7000214ff6amr253828816d6.23.1751322643335; Mon, 30 Jun 2025 15:30:43 -0700 (PDT) MIME-Version: 1.0 References: <20250630180803.12866-1-suresh.k.chandrappa@gmail.com> In-Reply-To: <20250630180803.12866-1-suresh.k.chandrappa@gmail.com> From: Nhat Pham Date: Mon, 30 Jun 2025 15:30:32 -0700 X-Gm-Features: Ac12FXyjCYGreweB0bkFxQ-UDbnU0CajEdwIFsh56FbrAVpbzdoYdkJzqo4ZDjs Message-ID: Subject: Re: [PATCH] selftests: cachestat: add tests for mmap To: Suresh K C 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-Server: rspam10 X-Rspamd-Queue-Id: 826A31A0009 X-Stat-Signature: dqpgssw5jg9r17tqhq36tc8i4itpg9pn X-HE-Tag: 1751322644-649701 X-HE-Meta: U2FsdGVkX1+sLef89SxkoivS7hqnR91Ot/iw8ETVTX5uO+gfSJIa53DmN8IObcCN60Dx35/JGwVA5MW96/YA2ntGC8s6P/3Auc5wCoJUakf1l/3RoBTlsoFHT061lynXO7QVfQmIkfPDikQpdH2WpIjm/v9z3dhEm1jZQEz+lh+GKu0D2ZMLXGs+ntPn8zxsoOuPZ4QYrGOvtTQhRrbDse6JG/7y+U1OJ/7Sg6OUyW2vlrl83qbSHkmFrnn72X0SBVXUsVp8uG8MNj1OycLrF3DNf/2MPWK5KVCWzAgd4eUoR0AxPHCBmdD4/aVZDGJjQsXzNQSojv/oW98RVTUW7MkPjYDqJUrUI73417a14Ctq6CoQcOWQGNqUHZ+lrQN8ZyKeMigEGPXcbqpy5stIssFMJmRLSNUoHnE5LkUuQ8J0+LBlY14rHZuxTMOWTv8Dcd/CkG3TxJka2sEs3rGn8DSx3DvAuoj9w6Vvd1hq+H692t1Lt1nflTiFo9vpFReBKn3vV+u/VrThzTtwZ4OEaVdNMnfnPvGl9KAyv1JI3eFtko6DZhXQTGhBvBJFcCrqsfl1KULZ5/OsNWm/br2GEJ3/8NM1VSEkGQKpWfqGlqNXf9yOSP45khwJLYEAzeRFk0gIVsd8eeBt5b6CuAE+wzGq9vQDiWjmuk9hUrqIqxkeVYdlbxrpfD7sQ64IwlAqj3eQcXuiU/jJqDKsRNGI+n+q65T2VRvBjryOJff9HjFUNkzaryhAS8TgYAqN6T3o/56QxFrYLvr5HdQ3I1tIORfn6VnTmbU4/O0U5qHCOk0SGeEhmioaAXqtUflGvo1kn9Ey9sW31iIv2GOtNzsYdDSBHuFBdxMJhnjkbEz+A9WR1yw2JAy6Br0P7sKV53IFDZoKTvVBuSu4MNfJZjPiGqlgoZfbAFoxY1fXNLu+dmxQWPzcLngfgyh6EYtdT4ipOAwdtp96QBbc7Xl/aTv IDLwixw1 t/HcIpXCDO3ThCQY6EFWI/SZqSoDj1QwLVa9V4raPdlySffkWKr8+4/8J/HBBCzWm226fTwuiDbMpGH/uI50vE8T/47dzrAJfDxCnPpO/CV0AHOVQVIHKv+gH/RaV/L7QkS40Af1Td7RIL3ovNORiwGBDRBs+6+WoZSAtVac04bUgQIvQVjmXRenLwoY++TZ1J+EEcVSOfxNZPF7bIv5MHRqnhmZBuv7xnxRPmJKuudC1te5lkJpn3787UZp/8xPboBuXiDUz23HymKhHPB+pjOvr3Y+f38BgzkgTxihDhX3aj7j/LZWMPyllm8YqqIo/s66jW1VzEeWGRacD5pXEKvFTBoyqR7C4jBZ1+WiHdPC6xvM1t/Bjw60L7sIlOiPPgVWOGfg9keavfSl52O3zLn7lN8JX5aktbe+vo7Meexic8j+7ohPB00kI47DQhRD4t3rbhIq/0s+KdgxOYaLrPcT/igQgzczchlDZWqi2o6yu7Kw= 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 Mon, Jun 30, 2025 at 11:08=E2=80=AFAM Suresh K C wrote: > > From: Suresh K C > > Add a test case to verify cachestat behavior with memory-mapped files > using mmap(). This ensures that pages accessed via mmap are correctly > accounted for in the page cache. > > Tested on x86_64 with default kernel config > > Signed-off-by: Suresh K C FWIW, the tests passed :) > --- > .../selftests/cachestat/test_cachestat.c | 39 ++++++++++++++++--- > 1 file changed, 33 insertions(+), 6 deletions(-) > > diff --git a/tools/testing/selftests/cachestat/test_cachestat.c b/tools/t= esting/selftests/cachestat/test_cachestat.c > index 632ab44737ec..b6452978dae0 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); > @@ -202,7 +207,7 @@ static int test_cachestat(const char *filename, bool = write_random, bool create, > return ret; > } > > -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 +217,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_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'; > + } > + map[filesize - 1] =3D 'X'; > + } Joshua is right. We're already doing the write_exactly() for both cases? Let's write_exactly() (i.e using the file descriptor-based write syscall) only for FILE_SHMEM. And why do we need the 'X' at the end?