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 8B89CC83F0A for ; Wed, 9 Jul 2025 18:24:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 29E506B00AC; Wed, 9 Jul 2025 14:24:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 275A26B00B5; Wed, 9 Jul 2025 14:24:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 18B8D8D0002; Wed, 9 Jul 2025 14:24:46 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 0758D6B00AC for ; Wed, 9 Jul 2025 14:24:46 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id C05761D8C1C for ; Wed, 9 Jul 2025 18:24:45 +0000 (UTC) X-FDA: 83645552130.18.EC19A9A Received: from mail-yw1-f171.google.com (mail-yw1-f171.google.com [209.85.128.171]) by imf15.hostedemail.com (Postfix) with ESMTP id E8BE0A0008 for ; Wed, 9 Jul 2025 18:24:43 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="RBo92Y/6"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf15.hostedemail.com: domain of joshua.hahnjy@gmail.com designates 209.85.128.171 as permitted sender) smtp.mailfrom=joshua.hahnjy@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752085483; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kfEz4rqEWja1PaN5ITE9k1Eh6xuG8m+k9OQNQf1a+lk=; b=RiGX3YaiYXBHJulhCI45gGWS1dGFiJdowZOU7OfoUkShneFF5CXlF3gXk/IZHSM9KnBaty qLlB1duIFhCUCBmv3Tm6Y2Ta1LcDXWzW1f4lhM2odfcqp47tYnzNuHzUOW62SonJtL8x5d CAoI5mBmvnDnmxVV/fCmPXg3Ns73cuo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752085484; a=rsa-sha256; cv=none; b=T1nV7XMdVwF/k02+jZlzg7wAXpQEfFUExW0jS6PzCmEf+Jpt8mNm/jtu8k/N5AUDwHxHDp gQrhFqKTISoX9h7FZTMCZH+XCcu7hw55xe5HVCy+3Qpwzt4k+kpqp8HrYtLeRmYy71dk1C J9+nIUyWPqxWwU95Mqe7Dga7QUT2GI8= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="RBo92Y/6"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf15.hostedemail.com: domain of joshua.hahnjy@gmail.com designates 209.85.128.171 as permitted sender) smtp.mailfrom=joshua.hahnjy@gmail.com Received: by mail-yw1-f171.google.com with SMTP id 00721157ae682-70f94fe1e40so14921037b3.1 for ; Wed, 09 Jul 2025 11:24:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1752085483; x=1752690283; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kfEz4rqEWja1PaN5ITE9k1Eh6xuG8m+k9OQNQf1a+lk=; b=RBo92Y/6XFeveiETZoKYU4DDwagZZ0YOChOPbxK+8AlfNj1Yj6o4d03OsVX19ZPn7s Vdh5YmhLeNEQqVAEbpietSORb/3CbLrMG8Vy7NyIFA5hlkYtJ0O0anjiuhg6ITt8XFKy V0qgjkLmFOn4JhqiM+bEQQ0ii2xwJoCoXWk0ELdouy4YJhQxUPxkxK9yctxLQx2vuLCK YjSNgPAPECLCoMgQJ8Mxo9SwVV9Dun6YCMd+D2mvcLXYQ2Bt8LwNAgQobkNwrYowP1na pU11hmtX8qChgRFMlDrTnscMQIVvM1/Kt09qXw2mFnO/6A5QgESGgm7zgIMF3AjBf2QP Hpqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1752085483; x=1752690283; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kfEz4rqEWja1PaN5ITE9k1Eh6xuG8m+k9OQNQf1a+lk=; b=IA6aFIYuWzwKinroyfE39uN5A2yW7PPciiQIrLs6IHK8+c/kj95Cx9NlRw4KNVEVLz ydeT6l3d1n7j/AbxvSTUIDc2lwJrRejDYiwhPFi4G/gSMOSUrKuZq48gq8h1QcMINoKL hyOz42vhskS5/sEp9BqBlemxyO3oz+1LpZeAoA4AYdqhxRJbzlilekhqfXzp7jWKok1H LoDKnGuqIL5tQDtPrlT5QsSU4IawyMwhyQT/orklHpL9hNgkHp4CnsV+XPI5KZpIseVi FQNTYfQ1uxT5mm1gpjeZgEUiX94UOicJeHJdLxV5MoHmGQbL946hSUdN6tp6eJbcpm5o n2uw== X-Forwarded-Encrypted: i=1; AJvYcCVh35TwawpRRFTwGI7lVlD5cd49v7RpMDWs9KaRHFhaYxlwXAayTAbuvcNy6oKgvInjSrRTD7ZnRw==@kvack.org X-Gm-Message-State: AOJu0Yy2FcYpvDWyG20rYcbO8YUI94ZVHZbaqMateB3siuO/HWJfz8Rh 373htc2mspBNOZfyQr73Hd+uAC7mKi3zBFLIonDzia9/JHj9yCjBHQJQ X-Gm-Gg: ASbGncs2sjzH+93BlxU4aUJ/WidokWwDZVFes+rL6C3XKDjugqFdK15nriKzs0udsSD q08JfiiCG+6zQSRnHOlusBMx3uto8r0CYSejIFsLhx7aJnsoFfNlYAAMvjqsQet6S+I/oIE+RB8 o645j3TT07nx9cPiEwkKpZ9AQR7zXszYf/pyEcY+/OLs9jEqcuCTA9rpj5VPFinmRTkkpabM2t6 KRBGwfeyn1X3nUYJXJwPULVllQVk4TRavQCU71IMJezTyIKbH3Vgmjy8eo4JBcmViCQm7pjccAR Qmfp6KY2NHvtZuk5v6vQNKoY+914hsEL/aZ6swJ7QT0IGUFe+8LtF+BjwqL5+g== X-Google-Smtp-Source: AGHT+IEYYOadzxnywoxaX789M206GrbkLKEdNYBCA/EUDWpZPshYBYvXk8xq4EiH1MPzZCeeRpRMXw== X-Received: by 2002:a05:690c:6b81:b0:716:675c:d97d with SMTP id 00721157ae682-717c15d9221mr8472797b3.15.1752085482612; Wed, 09 Jul 2025 11:24:42 -0700 (PDT) Received: from localhost ([2a03:2880:25ff:72::]) by smtp.gmail.com with ESMTPSA id 00721157ae682-716659a01f2sm26831257b3.34.2025.07.09.11.24.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Jul 2025 11:24:42 -0700 (PDT) From: Joshua Hahn To: Suresh K C Cc: nphamcs@gmail.com, hannes@cmpxchg.org, joshua.hahnjy@gmail.com, shuah@kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3] selftests: cachestat: add tests for mmap Refactor and enhance mmap test for cachestat validation Date: Wed, 9 Jul 2025 11:24:40 -0700 Message-ID: <20250709182441.2909688-1-joshua.hahnjy@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250709174657.6916-1-suresh.k.chandrappa@gmail.com> References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: E8BE0A0008 X-Stat-Signature: dzzssiei43sfkzxw4z31jmyt5hq85451 X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1752085483-665014 X-HE-Meta: U2FsdGVkX1+twZStglZFCxdNcGGl3oMZDRwKkH2JNW65HyZp9XtVYhQEoTN44N/Ou8HMo3iOt59DfVNfaiO4XR+TtbP3b+jeNHeKnq17nRsX2T1Bnw/0PNFbJd19KBzwJFsx/7DibsVKk1ApSxkkJPs//Okcy3M/SYwjaenlkmHVq8ctIG02o236JtlMnSRzfdxkdbog7ogMMv9oV7pi3THTDqKH6wNV2KyxGeVrHjeG/WLY8JLXVjqw2/m1hHoS+qzLIb9hzMfsirNpRpzvejybEBvjUivd8Uk8tbscWO4Hb74XiGQ3XNedJXhCddwJVZHrmxHamUG/nCPGXMSOdpZfY4hoH3OqQKD27T7TyHCnqjJR8lN84P3FP4i/wgr5BMId2FCh91kqcUV+gsrJdPb8yQJh/PmhkbZp3LFyborxPm80HT+pnCK/y+iMRSeMC2Upq2eh4nyE+0Qieu9sVFRS6MJNb7zxyeb2F7HPXdQ18skLOIU52pe2lB3pveSGler8kgsWIVZ9b/DrGpHOKyecjU0R7qWTjtZIyyNHpPb5Ugqiwa7ShxFCXu3S0mLc+iTAYeBcundUcsjOFCa9w2lIjEW1wdKlMYL2r+3dVr9N8XYr53cBQtmJx/CefuKRMinEdGKxMMcyKgZYj1DIocnV/2K6ZYpSZDCk8xevZhy0TImL4yreAoSFS1331Dj7BEPf1qIWy/22QnGrfd0fZ+lIdQtCvBsPKV0m1H39RFN9qwQ1zpUdatGjU00KYMV5QEZm4Ezo0S/r+CDsPgYNFVZG4BQPKF0r2H6Cw9K4OCLPW+ilvnHG8a5H13r3LgYU9lr/fnHgkL2X124+NU/3J1fdf7H5f42fOCIZ7y2XdwLbZ/VurpJyJ+5tsw7ODA+CY4gVQjGyLKXzHzpjTDSXLV+cI6D6cwgeWhArMue/vDPblxJ+VnQKfiOs4dzOpBLO24k8osaMlATnNBEhHhX hpmgbIr5 x9cWQn1Ke+fq/H/gMu+4jwTDWysK9Jyj44wbmj8T3U43gLp53Fyesz9bquJdfU3ymFNDOPyDt7ACpJ5QroZC/jTdjPDQ7JiUNi/d8i0+k9gggaHc+kKThH0F91V7Y68w9WbW62RsgydgyTwGYs2JME7xK6nmhgxc3mUPv3m7NLuJIcoAhYv8Uh458s/+fNWnvjb2Dd3gYo2JuO6hh5hBVlowtX/WI9wi1j2V7yft9rJm+YB3aZJnwcsMhSE7VMk7JDr+6v+qCXsM4CQLqauu4iy0LsLQOJ4bmBgNJVqTolYbMu4uidNSjDpGScpXHVaFbR69LCb3K+RxomyDYq4oXBzN9cWx4adDR4KOW956QTJH9rW4Ybea0yUm//hIkBupYPlc3SlaS335A2E4Fzv4rQNhZZnCkzP5Z6wftvdB7qa7f4OSG2Fn6h6cY9mTdm2b/hjz+6Yt6xfB8rj44epYiXH3Y0pMs/kKhdfltvy5/wi9V2yHh9Z7m71weQPzIDpDTpjlXBpcIYAunKG+uGLcN1EbRqve7aoC8ZoMw32beGfUPR10Z0JnIzj+BPTmgBLvKgeVI4M7RdPzHHM018F5qlTdXMw== 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, 9 Jul 2025 23:16:57 +0530 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 files using mmap(). > It also refactors the test logic to reduce redundancy, improve error reporting, and clarify failure messages for both shmem and mmap file types. Hi Suresh, LGTM, thank you for the iterations! Reviewed-by: Joshua Hahn > 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/testing/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 = 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 = sysconf(_SC_PAGESIZE); > size_t filesize = PS * 512 * 2; /* 2 2MB huge pages */ > @@ -212,27 +228,49 @@ bool test_cachestat_shmem(void) > char *filename = "tmpshmcstat"; > struct cachestat cs; > bool ret = true; > + int fd; > unsigned long num_pages = compute_len / PS; > - int fd = shm_open(filename, O_CREAT | O_RDWR, 0600); > + if (type == FILE_SHMEM) > + fd = shm_open(filename, O_CREAT | O_RDWR, 0600); > + else > + fd = 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_str(type)); > ret = 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 = false; > goto close_fd; > } > - > - if (!write_exactly(fd, filesize)) { > - ksft_print_msg("Unable to write to shmem file.\n"); > - ret = false; > - goto close_fd; > + switch (type){ > + case FILE_SHMEM: > + if (!write_exactly(fd, filesize)) { > + ksft_print_msg("Unable to write to file.\n"); > + ret = false; > + goto close_fd; > + } > + break; > + case FILE_MMAP: > + char *map = mmap(NULL, filesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); > + if (map == MAP_FAILED) { > + ksft_print_msg("mmap failed.\n"); > + ret = false; > + goto close_fd; > + } > + for (int i = 0; i < filesize; i++) { > + map[i] = 'A'; > + } > + break; > + default: > + ksft_print_msg("Unsupported file type.\n"); > + ret = false; > + goto close_fd; > + break; > } > - > syscall_ret = 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 = 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 = 1; > + } > return ret; > } > -- > 2.43.0 Sent using hkml (https://github.com/sjp38/hackermail)