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 C2129D3DEA6 for ; Fri, 18 Oct 2024 18:01:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 49DC86B008C; Fri, 18 Oct 2024 14:01:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 44EBF6B00A0; Fri, 18 Oct 2024 14:01:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2C7AE6B00A1; Fri, 18 Oct 2024 14:01:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 0DC616B008C for ; Fri, 18 Oct 2024 14:01:49 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 928744188B for ; Fri, 18 Oct 2024 18:01:41 +0000 (UTC) X-FDA: 82687490802.24.C48B0C5 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) by imf09.hostedemail.com (Postfix) with ESMTP id 802AA14000D for ; Fri, 18 Oct 2024 18:01:38 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="O/6cMNXS"; spf=pass (imf09.hostedemail.com: domain of shy828301@gmail.com designates 209.85.208.43 as permitted sender) smtp.mailfrom=shy828301@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=1729274458; 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=jZP1PTg8KCruR+VGTNIQOL+OxzWxissRAP6zaBFG7zk=; b=zUAGy304Y2QFVJb17qig5PWOxlWsc+RRxUD4jZHaEpJLmPJArmlbc/4rIaAIj6UqWJUg86 59G4qHP0AdmN2MrExAAvTwDYJF2+Ae/ZNeIq+z0hh+6Aoyc5hKVZ4QxBcH8KvLghT6PDTb YCJNzLvsvBGyIeCAgMjIsRWMLSrRJE4= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="O/6cMNXS"; spf=pass (imf09.hostedemail.com: domain of shy828301@gmail.com designates 209.85.208.43 as permitted sender) smtp.mailfrom=shy828301@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1729274458; a=rsa-sha256; cv=none; b=xn1mDDTMeC2K4/FbgMztmWeasOnRgLNPPtQaegxrqS1vuncMU7uZ3f54sE+r5+wfvYOkFk /f174f1JLzC3WReGviPXo2q1MN1re1Iyk1U9FH0Rvr6HO5Ze5C3SeDEn24mVOhWrMltpjm bq+CAqnyiLRLglPK/MQE/eYnIQSKwR4= Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5c96df52c52so2975964a12.1 for ; Fri, 18 Oct 2024 11:01:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729274505; x=1729879305; 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=jZP1PTg8KCruR+VGTNIQOL+OxzWxissRAP6zaBFG7zk=; b=O/6cMNXSNuwPczrZQcrpxXU8xZstIYe+i1DeCfs6e6Csr7aDOJeFZdsliqcJFz/SRN y5Tx9xd+5xMkijldtlz/oVZrsJgBFgK3FvWmTm5mUGH1+/IKI5VaQucgxMmfQS1CP1fx +o0iDPtNIjE5zbLc2wpM2/Dy9xmZT5wRrK/9YQACpUrqACoTgZKMTUrV1J7v78DIeufS Qz9v6fk7Qr76maFrr/CYtm7yh77UiCvcJwq7go3f5C5n8rn2Q5s4bmZWmZ8sI4h1/dNV /CCZ2MNhEgUSZdEnRpdWVRo6Xh4MksrSIuJnf1IJ+i6HfTQo/Z3/VAPvHBOp7QhGpneg HSMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729274505; x=1729879305; 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=jZP1PTg8KCruR+VGTNIQOL+OxzWxissRAP6zaBFG7zk=; b=EGpK2nWfwCrPSEWPzAUTk7AGFwm44UsuINp/YmYRCP5IIE1jeq7R1traKuXumEOG8H /xgi7Swss7LllyUdX/DJP1qSFTNVacvtIIUL/B4VE2R381DXhbDU/GqqrdbHBp/mlDSw 8AdZgXVLpo7dpdEH0bbyTEfkXogjr3xLu1jWBd+aeqfimJ73sxsXMaSgeJDmyQ3Qykc2 f4BtRKIiPUii9iwsUBWxkBEVU87FD6lYirlTkt/eBd1ABdjbESMU4nKoCvk6Oy/KGHaI LRvWYk0v898g2nZuy5/zLHDx//EL70TTbtgZ3qUOoq9nA90e7Cn/pNTX8vd6mhl3LfIm nzhQ== X-Forwarded-Encrypted: i=1; AJvYcCVaiLriXX1KW6ioj0BB7HvV1k2SSguUtegX6TOPIQTk2iw60kU3ekvEb9FubDm50qlBwJb2n0QDqQ==@kvack.org X-Gm-Message-State: AOJu0YxfcQlm/qrc8ymvoaCTkOJDhs3iv5fUMr+NtqQzlXkY26CH4RGq c9xWHAc4hbTiJAd750MStYTg7/62ERjd/Ok6/lEZwPw/fYbxdO/oM2xw/s1NXauIEV7iVpQvxBT XcbXk1mO3obMQZADesxS0UauEPYc= X-Google-Smtp-Source: AGHT+IGZ44anXLhHUZ28NxKBH31ZqRaXFtBonich+uDZLtBgQ1AQa2zbPcfX7utnzYulvJaeNlvWjptZ3Rcie9K/Jes= X-Received: by 2002:a17:906:4788:b0:a99:d797:c132 with SMTP id a640c23a62f3a-a9a69a6605dmr279322866b.16.1729274504774; Fri, 18 Oct 2024 11:01:44 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Yang Shi Date: Fri, 18 Oct 2024 11:01:32 -0700 Message-ID: Subject: Re: [PATCH v2 1/2] mm: shmem: update iocb->ki_pos directly to simplify tmpfs read logic To: Baolin Wang Cc: akpm@linux-foundation.org, hughd@google.com, willy@infradead.org, david@redhat.com, wangkefeng.wang@huawei.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: w1ujcan775pzyy9e3mteguh4psocmti6 X-Rspamd-Queue-Id: 802AA14000D X-Rspamd-Server: rspam11 X-HE-Tag: 1729274498-79225 X-HE-Meta: U2FsdGVkX194FCEoToRPILa0XXLaiJ78/hlHuXwMxicyCQkS1x3SSRpHd2/J9CcoI9xaJAzjH2eS26LbqyvLzU5l7W7iwwXr4suFpjzh2LnpoafQc/ofFlg72U4+ijDNgcGzI5cKx60Hok4P69wM3DBWq6PVhM7J2cN/nGutaueBXyoXM5wJgs6Do6wuyitphQtD8elsR7I/D62IXwRGI+Iq41XZxheDa/EXfGqfILI34MKCOlY62kM2+uCntB6Fs1po9jkJy6kzc/sD4+hSCmz/DymuBR+o5NhQfeY0cl2svqX1OJGY0u140nWG2hHwxhZFuv3BqZM0YX6oouGhBQU/V98rl/rTxTLWncifGyREXJ9hhGKVb3lw2zXLsSHQCK3EQ038++y2z0RVbbkKdQwvXv9aQaqCImwOSLnWxuqc21/3Cl2VrYhFpwYfYZNi4WnBRuRmIkQv1VohieiqnZ4HBaS0fRbpQ3aH+5TynH+THo3Fb7vEjaOuvCOYyl+3bmokLT2THLUOvcuU0/fVZzDOMGMc0iz6uyYPHkd13XM2JQjPGSlMXdjH4HMAz876iTmAOzQ625g30itFYDaUEtycXKT+PqT8ytTIhBJ6hUaerEw3HhO5C7JrZfFuBnNCww+3jNTQwFpZf2KCKpXq8p2mMTxPZpfx/cjlE98Yaz+gRQKUR5rHAirMlBiYPPMK4bDT4g0TPvfK6v+029DNNqWZhazpBqPVJWbWckWz2kUJcsaepFsLAduo2HTbwe9xzk+7lSO/l+GhzVkvuW7haMHa3PBqAnPLNXeWvoQmt1Pm9NnWTEj93WYdWolTuSc7kwddo3fLpZRaQa1alXjyMbTIBNWu19bOO8BZ45Ubg+yG9Gh+fOladYm9U3cH4Z9E6rIvrhHf2yOA9jV24oZgoYgDoGU2UBPEy8Ll3sIcEDeljQQb394/zp6j323w2nGghVX8f9hOk83vxpOKgtC ZLExO0Cj uX4WDuHHNG1JuHz+yVSu0u19c6ch88Se9Rc7j9IB1FF/y2UBLFCDWHVMIwww189p3sX6NnvybWbgfJRw/8oHEGOC/1uItjnxhl5goTv8Ynekd1tzyae1YW4u0XijjQlnjGnUYzCvvHiZ+8RcIM/qYoLKHfSBMMG2dIPoSuu9YFzogztc7U1duZHBZWDCY6sIV5/jKtm1ZcqW/+6OUzrjyDjSOMZU5M2h+oQ+xAsWIpB8uMpUdJH5QTzvcaWeZam9RzJrRatNAAXvsdO7O0QucB8IA+0dzx+kBM3OFJURpNLdxyCtrE8vowVLI0VAR+/dMKmMqWHj5/cdpRTIL0msb/NJHNsYkCiWlMXylAUGsfr8N26s0YKS1uWmlP1qCo2MRe/hi/xpfOt6LiTKavFwkl9n5dZl6ARScfDi+ 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 Thu, Oct 17, 2024 at 8:00=E2=80=AFPM Baolin Wang wrote: > > Use iocb->ki_pos to check if the read bytes exceeds the file size and to > calculate the bytes to be read can help simplify the code logic. Meanwhil= e, > this is also a preparation for improving tmpfs large folios read performa= ce s/performace/performance > in the following patch. > > Signed-off-by: Baolin Wang The patch looks good to me. Reviewed-by: Yang Shi > --- > mm/shmem.c | 35 +++++++++++------------------------ > 1 file changed, 11 insertions(+), 24 deletions(-) > > diff --git a/mm/shmem.c b/mm/shmem.c > index 66eae800ffab..93642aa8d1aa 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -3106,27 +3106,19 @@ static ssize_t shmem_file_read_iter(struct kiocb = *iocb, struct iov_iter *to) > unsigned long offset; > int error =3D 0; > ssize_t retval =3D 0; > - loff_t *ppos =3D &iocb->ki_pos; > > - index =3D *ppos >> PAGE_SHIFT; > - offset =3D *ppos & ~PAGE_MASK; > + offset =3D iocb->ki_pos & ~PAGE_MASK; > > for (;;) { > struct folio *folio =3D NULL; > struct page *page =3D NULL; > - pgoff_t end_index; > unsigned long nr, ret; > - loff_t i_size =3D i_size_read(inode); > + loff_t end_offset, i_size =3D i_size_read(inode); > > - end_index =3D i_size >> PAGE_SHIFT; > - if (index > end_index) > + if (unlikely(iocb->ki_pos >=3D i_size)) > break; > - if (index =3D=3D end_index) { > - nr =3D i_size & ~PAGE_MASK; > - if (nr <=3D offset) > - break; > - } > > + index =3D iocb->ki_pos >> PAGE_SHIFT; > error =3D shmem_get_folio(inode, index, 0, &folio, SGP_RE= AD); > if (error) { > if (error =3D=3D -EINVAL) > @@ -3148,18 +3140,14 @@ static ssize_t shmem_file_read_iter(struct kiocb = *iocb, struct iov_iter *to) > * We must evaluate after, since reads (unlike writes) > * are called without i_rwsem protection against truncate > */ > - nr =3D PAGE_SIZE; > i_size =3D i_size_read(inode); > - end_index =3D i_size >> PAGE_SHIFT; > - if (index =3D=3D end_index) { > - nr =3D i_size & ~PAGE_MASK; > - if (nr <=3D offset) { > - if (folio) > - folio_put(folio); > - break; > - } > + if (unlikely(iocb->ki_pos >=3D i_size)) { > + if (folio) > + folio_put(folio); > + break; > } > - nr -=3D offset; > + end_offset =3D min_t(loff_t, i_size, iocb->ki_pos + to->c= ount); > + nr =3D min_t(loff_t, end_offset - iocb->ki_pos, PAGE_SIZE= - offset); > > if (folio) { > /* > @@ -3199,8 +3187,8 @@ static ssize_t shmem_file_read_iter(struct kiocb *i= ocb, struct iov_iter *to) > > retval +=3D ret; > offset +=3D ret; > - index +=3D offset >> PAGE_SHIFT; > offset &=3D ~PAGE_MASK; > + iocb->ki_pos +=3D ret; > > if (!iov_iter_count(to)) > break; > @@ -3211,7 +3199,6 @@ static ssize_t shmem_file_read_iter(struct kiocb *i= ocb, struct iov_iter *to) > cond_resched(); > } > > - *ppos =3D ((loff_t) index << PAGE_SHIFT) + offset; > file_accessed(file); > return retval ? retval : error; > } > -- > 2.39.3 >