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 7B7FEC3ABBC for ; Sat, 10 May 2025 03:31:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6900D6B011C; Fri, 9 May 2025 23:31:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 622036B011D; Fri, 9 May 2025 23:31:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4DF106B011E; Fri, 9 May 2025 23:31:04 -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 2E6206B011C for ; Fri, 9 May 2025 23:31:04 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 6B305812A6 for ; Sat, 10 May 2025 03:31:04 +0000 (UTC) X-FDA: 83425572048.13.B7952F7 Received: from mail-qt1-f175.google.com (mail-qt1-f175.google.com [209.85.160.175]) by imf30.hostedemail.com (Postfix) with ESMTP id A104480007 for ; Sat, 10 May 2025 03:31:02 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=kqFVKFiD; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf30.hostedemail.com: domain of surenb@google.com designates 209.85.160.175 as permitted sender) smtp.mailfrom=surenb@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746847862; a=rsa-sha256; cv=none; b=2GRfR3O7rTrTj1DZJmsVpB9Vmb7QFf/0My3meYFmIZKJ8e7rLVeYEOsJWd2ozY9ChBI1WN apJEmUlBfIOe736srisunkR/RpZqNpkg7oufQTROctjb0gEcfTFl1IE3Wki36MuA3xI+hb 4C7EMUtBQJBYWdlE5O6+xRyL/DmL3jQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746847862; 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=cxC/mzAUv+WLp2bqkAOe0LlzGx41xiGaA3xtnTEbHto=; b=Pu7i69ggUGrzf4A6PWkaYyk3IKzONkWPkdvOZimaUn0bx5qT2Ivk0sJF9bs5XcC9I85ZKY EWflYsbaH438RhgviDKdMPWgF+I9TwypsjEDKBMqqt2msRrybTYHHjTOEBfvwkb5Co6hKi 6NSv5OfvBee9hL1RyZqc3ypj4OsVUaE= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=kqFVKFiD; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf30.hostedemail.com: domain of surenb@google.com designates 209.85.160.175 as permitted sender) smtp.mailfrom=surenb@google.com Received: by mail-qt1-f175.google.com with SMTP id d75a77b69052e-48b7747f881so96951cf.1 for ; Fri, 09 May 2025 20:31:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1746847862; x=1747452662; 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=cxC/mzAUv+WLp2bqkAOe0LlzGx41xiGaA3xtnTEbHto=; b=kqFVKFiDIphTW5txblCNmbQ3ey0yewGkIXk4g/hBx4ffWZSm9ZmGvjJkf3x1hqTVDo 0uA3LsEREjgRAcukp38Y3jvWg544l6BnXLHtpjam4uw4+3cZ/5NSHpEHTT/CzsbkJ6Fv dyS4cv2Eb/jddcXCtRh+LiNSvdFWiHyDovGxntQhTh7//ktSV/0KkvLTJzcuavZeFoW7 jPDajLmAAyC+xhB8/mOJskLHMfXVjoSnfsvM6pWunDkg/0TZVC+hdQHWtUSvo2+5/XMu Px2jb17T85RV/TIFFq1slyANVIbePMzM00eLJ4xCe8wnEPbvNtztjAVtNzQ0ojiDpryd TQ1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746847862; x=1747452662; 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=cxC/mzAUv+WLp2bqkAOe0LlzGx41xiGaA3xtnTEbHto=; b=R5B+7uvIWA94S5bVYhRdUtvuySM24Bb+YrY8vEGQEZyTyNZm5ebKIrFx9wflqmd2EM NWbCrXpSbrSYDYlgicrl4eEyGL4psRWThdQ0ax1I37SRpGZ+d9yBPE/+/sVk/MndpHv3 b5nDAb+LmGeCt/JAWhiNUa4C9DbkWIe7eFDiygiqqD9qJ0P2eWYQlY6h8qWOCIFBzI6M lOl3+KRUNXDzjntjepvdpdg4CSgNC4W55A47lZ87kCVHL38xr01ulkiSHKnDB/PefFb6 iPLF4udXt0XVCRgIiY4ETUeqbbEsiukLo+RJmsTPfn/aZuwAj/d6dLi+Oev+JDai2U3q ycTg== X-Forwarded-Encrypted: i=1; AJvYcCUWDja0YCZkeYcDBV0r9/G47OhlTNXQdxLWFtyY3DPFL9yzcrQ7/4qU8arDmsQbKawJVWO7NMoQUg==@kvack.org X-Gm-Message-State: AOJu0YzlaHWX2L6ZxbetbPKngN+egKPYlRQynWugPzRIBSmOAcqy9ZLq dAl1Qye1RjhyU1DD1phDsHhKBn5vPbFuiwvkTPavV+2l2Ba+uYWTHHFJO+VIj2Glp3IRikQsybZ j7uSN+IPCshx/WHKAyX7+s/xIJ3QbD9QD3aB9eHTS9iQ5/KgLuwkU9OU= X-Gm-Gg: ASbGncvIJdsMOeineu29HcT4OOVMCM0i/HY1JUHDgmzCgcsW6BxPUR4jod0WQ/JeE1v TFH3d+DXAjf+BJG4kei3vWfVQ056CN1iXK+zWJ6Upuz3XtF7RhWFJOuF1PA3aVk4P+/o9R9jB3I xG16skpUIHBX5KI8Iwf3QbjWugrL5+D84= X-Google-Smtp-Source: AGHT+IFGMaC9OqkxFNOPZKLQA5bM+AqNuwWWMAveWL+IGAFF7qDQwggjNqRbcq9N+nQeXDrOPW2xGU801kG98ywgtGo= X-Received: by 2002:a05:622a:54e:b0:467:8416:d99e with SMTP id d75a77b69052e-49462f90a7bmr1032861cf.21.1746847861271; Fri, 09 May 2025 20:31:01 -0700 (PDT) MIME-Version: 1.0 References: <20250507175500.204569-1-00107082@163.com> <20250509173929.42508-1-00107082@163.com> <7f237574d9f08a9fa8dcaa60d2edf8d8e91441d4.camel@linux.intel.com> <294d0743c0b2e5c409857ef81a6fe8baaf87727f.camel@linux.intel.com> <3cbaf905.ef7.196b82bdcc9.Coremail.00107082@163.com> In-Reply-To: <3cbaf905.ef7.196b82bdcc9.Coremail.00107082@163.com> From: Suren Baghdasaryan Date: Fri, 9 May 2025 20:30:50 -0700 X-Gm-Features: AX0GCFsQsRL9ga96UAA-qchFPMnhNROUHcHBnwyvG4zLqJF0vdTeFZc6RBnaKRU Message-ID: Subject: Re: [PATCH v2 2/2] alloc_tag: keep codetag iterator active between read() calls To: David Wang <00107082@163.com> Cc: Tim Chen , kent.overstreet@linux.dev, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: A104480007 X-Stat-Signature: 43idp3fb89zfi59bsyzzftg8ko6rfu5e X-Rspam-User: X-HE-Tag: 1746847862-926876 X-HE-Meta: U2FsdGVkX19/aNMRSeS1FssIjs7lN4xM7ifQzehU+XWEwBs1mITUvZvFFsYv/Wiix/x07ct5QfOA5H3USe/CNpMYxwiCnz1dxkPLJIbXA3vX7QQVs4Ix3dy//VWqswfo/kcoFVBSy1mfGSnWhiNxFN31I9Xd3K/IzWQvh29mDWdW66dNkDNUwuvGENDXE7+xIO6sEA7Y55EUJYjxp4BKwRlY9Hgnonzb5Wz21QX+WKTPNww6xHT+OX9fLM/cJL70o59dT4WKkGmFJ5zJgMVHIXL2vRmYzyg4bGfMdX4ydUnHHzjVF8ELO9HKeyWDz0QTa2rPmv7aCCbniBzBtzrYVhwBdDNtBoXDzx89/AE5z7ksO0mMzBdz6n1p9CkBh1pPQGCO/6SecIy+sa96RtLSvxie+uTTq5GYLREYURWsoY4Ycs7c9uSdFAisDUorQH8f8P96dFLzwpG7TBQS6fygPNIWJchofUIZK9ty8OvoCqKaQE3XBaveiyjwH2R3YIqtDAleJqLqtMlQbjEeDcsNs3MAQvubpc7vpot9uz0BfS0WryPajHe0UkK2iYMjnCIshuwjyuSPaK8rnKjRTUCVorTOfhUGfdA6Y6unChGPXgTw0cAgkUnoSPa8x6gge5IqNVdb/rq0/dSSVyCxUyFh/OgTNql7J3Rw7Aq4vv1Pd1TwfHVee1mQeMC9Sat0F5049NvAm8XLI7eS8QoD59NO2tRcMRclU5XSHV2jRdV669bN2MxnX7yOQKvGMNSf5QVYBdnvxIk0r36XjCNqv6tqgX3qMHOxoR9tze0PaOCETlWG8MA+uCGcm5XHp6oXYl2qjCpGkenY4yTT+x7gQKgAPNHIAQ5U+6v690ITzC/GKxrkyCjrBUdbCPEdUOAR7Dmd0MZ1Xt/uk/J/BLTOlw2FHdNd6yW2s83sGaFrKzfWyjDGFIHM7ENDRrt8Y7a/fXmGiu9Zoc//gfwN5KZDrvm jiu8D2Ge mzJT9Rv7RluMnI6/iNWBGPxygC1VAO34il7N77A5Y9cvHOfid8o6aaaB+ssbWeXbE/DjVXq0MpCe1C8xUn4mY3tNzFSNTho/4TZRPLSd7ic8OrSAqCpZmrkoUr0ftb2JmIgvWfM4T99GGwam3hWoypOZflH9+CjvNUTI7Hw2jo+R0uz4WIaYbMNBsft9mvGbOLjV4ItGOu8Au/bsn+Wd4ePya8w9CRWl4YtBxDLRbBtqxtcSCOqcnI2prWI4yxMoR2U+opDROmZmmH2xebxpeK6+/Fg+rG/rL14YjTsuQ3AKIKrP1jVW3Bh6mVqjrw7zK311caLp6KaPYOnwCgUsMWwa5WU7A7MqGzY2gsONM10+ivo1gHw79CV/5gnK1e5l/iBw21Ip5bmkB0vqVqCnuCM9rlWIpIH8B+ypm01hL0r2DB31Qgvf5C/dmVZ1MyZpQObtWYX8sfLVgw4I= 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 Fri, May 9, 2025 at 8:10=E2=80=AFPM David Wang <00107082@163.com> wrote: > > > At 2025-05-10 05:15:43, "Suren Baghdasaryan" wrote: > >On Fri, May 9, 2025 at 1:46=E2=80=AFPM Suren Baghdasaryan wrote: > >> > >> On Fri, May 9, 2025 at 12:46=E2=80=AFPM Tim Chen wrote: > >> > > >> > On Fri, 2025-05-09 at 12:36 -0700, Suren Baghdasaryan wrote: > >> > > On Fri, May 9, 2025 at 11:33=E2=80=AFAM Tim Chen wrote: > >> > > > > >> > > > On Sat, 2025-05-10 at 01:39 +0800, David Wang wrote: > >> > > > > > >> > > > > > >> > > > > Signed-off-by: David Wang <00107082@163.com> > >> > > > >> > > Acked-by: Suren Baghdasaryan > >> > > > >> > > > > --- > >> > > > > lib/alloc_tag.c | 29 ++++++++++------------------- > >> > > > > 1 file changed, 10 insertions(+), 19 deletions(-) > >> > > > > > >> > > > > diff --git a/lib/alloc_tag.c b/lib/alloc_tag.c > >> > > > > index 25ecc1334b67..fdd5887769a6 100644 > >> > > > > --- a/lib/alloc_tag.c > >> > > > > +++ b/lib/alloc_tag.c > >> > > > > @@ -45,21 +45,16 @@ struct allocinfo_private { > >> > > > > static void *allocinfo_start(struct seq_file *m, loff_t *pos) > >> > > > > { > >> > > > > struct allocinfo_private *priv; > >> > > > > - struct codetag *ct; > >> > > > > loff_t node =3D *pos; > >> > > > > > >> > > > > - priv =3D kzalloc(sizeof(*priv), GFP_KERNEL); > >> > > > > - m->private =3D priv; > >> > > > > - if (!priv) > >> > > > > - return NULL; > >> > > > > - > >> > > > > - priv->print_header =3D (node =3D=3D 0); > >> > > > > + priv =3D (struct allocinfo_private *)m->private; > >> > > > > codetag_lock_module_list(alloc_tag_cttype, true); > >> > > > > - priv->iter =3D codetag_get_ct_iter(alloc_tag_cttype); > >> > > > > - while ((ct =3D codetag_next_ct(&priv->iter)) !=3D NULL &= & node) > >> > > > > - node--; > >> > > > > - > >> > > > > - return ct ? priv : NULL; > >> > > > > + if (node =3D=3D 0) { > >> > > > > + priv->print_header =3D true; > >> > > > > + priv->iter =3D codetag_get_ct_iter(alloc_tag_ctt= ype); > >> > > > > + codetag_next_ct(&priv->iter); > >> > > > > + } > >> > > > > >> > > > Do you need to skip print header when *pos !=3D 0? i.e add > >> > > > >> > > Technically not needed since proc_create_seq_private() allocates > >> > > seq->private using kzalloc(), so the initial value of > >> > > priv->print_header is always false. > >> > > >> > But we'll start with first call to allocinfo_start() with *pos =3D= =3D 0, > >> > >> Usually but not always if we do lseek() to a non-zero position beforeh= and. > > > >Actually, this change will break the lseek() case. We can't always > >assume that we start reading from *pos =3D=3D 0. Current patch will fail > >to initialize priv if we start reading with *pos !=3D 0. > >priv->iter should be tracking current position and allocinfo_start() > >should detect a mismatch between *pos and iter->pos and re-walk the > >tags if there was a position change. > > seq_file works line by line, I think even if it support lseek, seq_file = would still start with line #0, > since seq_file have on clue the byte size for each line. > > I will check the code, make some tests and update later. Ah, yes. You are correct. seq_lseek() will traverse restarting from 0: https://elixir.bootlin.com/linux/v6.14.6/source/fs/seq_file.c#L323. Position jumps are similarly handled with traversal from 0: https://elixir.bootlin.com/linux/v6.14.6/source/fs/seq_file.c#L194. > > > > > >> > >> > then print_header will be initialized to true. > >> > >> After the first call to allocinfo_show() print_header will be reset > >> back to false. > >> > >> > Will there be subsequent calls of allocinfo_start() with *pos !=3D0, > >> > but priv->print_header stays at 0? > >> > >> Yes, there will be subsequent calls to allocinfo_start() with *pos != =3D0 > >> and priv->print_header=3Dfalse, which is what we want, right? We want = to > >> print the header only at the beginning of the file (node =3D=3D 0). > >> > >> > > >> > Tim > >> > > > >> > > > > >> > > > } else { > >> > > > priv->print_header =3D false; > >> > > > } > >> > > > > >> > > > Tim > >> > > > > >> > > > > + return priv->iter.ct ? priv : NULL; > >> > > > > } > >> > > > > > >> > > > > >> >