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 A75A5C3DA6E for ; Wed, 3 Jan 2024 10:15:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 23E748D0065; Wed, 3 Jan 2024 05:15:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1EE908D0061; Wed, 3 Jan 2024 05:15:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0676A8D0065; Wed, 3 Jan 2024 05:15:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id E65EA8D0061 for ; Wed, 3 Jan 2024 05:15:21 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id B78A81602C7 for ; Wed, 3 Jan 2024 10:15:21 +0000 (UTC) X-FDA: 81637592442.09.20F3569 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by imf04.hostedemail.com (Postfix) with ESMTP id 352CD4001F for ; Wed, 3 Jan 2024 10:15:18 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=QX5RQN1b; spf=pass (imf04.hostedemail.com: domain of zhujia.zj@bytedance.com designates 209.85.214.173 as permitted sender) smtp.mailfrom=zhujia.zj@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1704276919; 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=r9kSoFv/7+pD3aWATl3d1Zz/zNpbqJdAmBC+qKH73H4=; b=5O4qkhw3dPB+/0u3s3Wontasf1XI5dzef1eQG+gUDpNR5pu4jHXaABUvNn29zGj56i/1mB IhFzTfvyvqTVZ4hLApUAl0cmbCyKo4ps88lVxW5FfiITrav6wmuct9XAFg9M8mkV5sFTNh tUcAiadKR6BTa2aja0RaqrbA1lnAPtQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1704276919; a=rsa-sha256; cv=none; b=C+7la6mH83mheRSbNsAybbvU42I8cwZH97XY+HWddald3OYnkHCW3g3bhJ0jej3nY3CIq0 IW3d8oHT3Ac5mouhvV5+a4ouTJMX+nIzRw18WbG0aBob1RGZN1wZSzeGpUEAAjBJ0G5A7l WU2su8cYjPDdODPRlGL/u+/FXu7MHIE= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=QX5RQN1b; spf=pass (imf04.hostedemail.com: domain of zhujia.zj@bytedance.com designates 209.85.214.173 as permitted sender) smtp.mailfrom=zhujia.zj@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-1d4c767d3a8so7684945ad.1 for ; Wed, 03 Jan 2024 02:15:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1704276918; x=1704881718; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=r9kSoFv/7+pD3aWATl3d1Zz/zNpbqJdAmBC+qKH73H4=; b=QX5RQN1bT0OCPf6udZmX9Y0eIaU8TvFYXZVdPyRhC6Eb5bllh6QGa+ZPOOt9ySQxo5 /MOPJEBjesxSXeeAy/IGtVJrqlVNLe1NoAqOlODnBqtFriMWLMy2kh0gIgLlFxDhBWKF dyNTGT0L70BfFAUyzL8oSuivFb1c8sTWmn/N7DslXbQ5vihz58R/jE1cUqsWDzgdaUqR WCI/6/A9oG90t4ocZXDARZMZCc9re4LKxqk2dd0TQMDKSiyJoCaMZsnX03lfqan/6OJr JgBI1Pdzbj1h9BdL4/Fm4rck4crrn8DTd+L46S1FGHr6RMFwKbELV1PGcLILDz8pXeEX BtkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704276918; x=1704881718; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=r9kSoFv/7+pD3aWATl3d1Zz/zNpbqJdAmBC+qKH73H4=; b=JBVXcw8Bb/l1WbsLcFyZremMYfq6Jl3IZKbiP7btpnFsO4Vgcfia4eonZQ18Q1QKCg 0JpLd3DrP25ZLCX6kMNCcke+UiegYSqI7BSzWZEMijvkdsl+BQsSxDS4VLFyBkxjIrPV glKe/tS2mshx7OzErqtgSVI+KumJGBe9B69UW7lsqAhXl/yDX7ZlRtymLT7/xFezYnsA G2o07NFd42/jlCuFj04BHZU+B966pszW+ixOfslSy8Us2M94P0S9biQffEeRdgDWtfzl 6NwYJ4QImFl/sikX7pXP3WYyilfovTnyEBEEgYqSRxOJsNUCpjYSMO3a7zLVJg9LF31N YumA== X-Gm-Message-State: AOJu0Yzwp2aWADusm46Wut7JZ+ocBXWv3WaumttlCVRoJa9+nCyC5Xnv qw8boK6EBKhJUcih5RjobStoLBmwlT0wiw== X-Google-Smtp-Source: AGHT+IFb5s1kRhg4lbBcAXzAad/ZQWUpaLKwi6GbYgUI52nqs1wg58jl3FEdVQCfwyB+lzN5OaJ2qw== X-Received: by 2002:a17:903:11c3:b0:1d4:75c6:9560 with SMTP id q3-20020a17090311c300b001d475c69560mr6941145plh.59.1704276917712; Wed, 03 Jan 2024 02:15:17 -0800 (PST) Received: from [10.3.158.72] ([61.213.176.6]) by smtp.gmail.com with ESMTPSA id bh10-20020a170902a98a00b001d4160c4f97sm21615997plb.188.2024.01.03.02.15.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 03 Jan 2024 02:15:17 -0800 (PST) Message-ID: <42dd77c4-8842-4f96-958a-0d9407362b9d@bytedance.com> Date: Wed, 3 Jan 2024 18:15:09 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Re: [PATCH v5 33/40] netfs, cachefiles: Pass upper bound length to allow expansion To: David Howells , Gao Xiang Cc: Matthew Wilcox , Marc Dionne , Paulo Alcantara , Shyam Prasad N , Tom Talpey , Dominique Martinet , Eric Van Hensbergen , Ilya Dryomov , Christian Brauner , linux-cachefs@redhat.com, linux-afs@lists.infradead.org, linux-cifs@vger.kernel.org, linux-nfs@vger.kernel.org, ceph-devel@vger.kernel.org, v9fs@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Jeff Layton , Steve French References: <750e8251-ba30-4f53-a17b-73c79e3739ce@linux.alibaba.com> <20231221132400.1601991-1-dhowells@redhat.com> <20231221132400.1601991-34-dhowells@redhat.com> <198744.1704215477@warthog.procyon.org.uk> From: Jia Zhu In-Reply-To: <198744.1704215477@warthog.procyon.org.uk> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 352CD4001F X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: fdngqh1msaf16sbirhskjexhbngpi5ds X-HE-Tag: 1704276918-833205 X-HE-Meta: U2FsdGVkX18/pSy64mLO/k7kpCVnfHz5iKmOQhiIH8S4LKti34k9qcULi9mTSbgfu4/5V0cqi4INzTHFLZiTO07wzLNwBFi/iQSmH9y2k6s4AbbeC4rSW90bmViiDsRBgBh1y6ElDpC2ZkbGRtCqtbBoxjLRUN2cLq/kjb0g3GIn4CiB4IvnyN4GrA84RJIm6FRQZfhLtL4GzlL8smYZcCBkQ9j+qN/BkFmP2Q0cTbw6VvBybVTLaWL+hQ8998vmFmhlpqo9qbLkGL6WlMcIqC6gDXCwi/kYfRt2G/UtjBy4IYJR+nTpR5w+xmCCrMlnd3NJ+oFBJXkROgPyobH8qTUAiIJQ7yqgPTemQZV+7Syrjf7ARxdqt0gi+HyY5aVQ6YbBqZO27mu0rS6qz3W4Qh+3JnMJv/EOFeVRqEnBfyhVZlhiF92ojDkBH+T7UBV4YnTtT3sZmddEo2I8VWss0iGUb/OMzSx5ApMHGrSxa0GgJ0QQlFlQEhLWhA9JyzwmY8MQHP+hWYjYyGDb67bVWZKEHMJyFzReNStAUjZs/W+3Xn1aFmV8DkfD056CXtwCiFwe/yCmQeTP7jdPf9DLgyVYGCOvRouYqV+NDpw7YnzaTM31/H+XCN0WFMI5BtMmgtR9F8S9aWBC+CvrBnhM092qwKsFeK0U3XteaFymxCEmBux4V5HABBS01TNAyfc9ETr8FIZSJjiqSEDlJzIaEVNpx3h1uiCNSVtfHObHyhoMw2vi2xiumKts5fwSMDeZN2oNwRJ4y6Bje6W+tC99NpiwqTFJXa/w5QK8uHD2QQVLX0uxW5UYHDz0HMpgTH8OO4yBRRAqdSTNeegjVx1GvBpj+DEuWzCsThAkldpc2d760pJ6Ixx4pQZa88bLU23y0ADeKHEyCEOwF2qRl0tfn1kgTe7eWO8+IPnlk3tVtBA/SLcAFvseyC/gSevZred3/dy8CqREZjlSOnb68sw h5WTJ3/q 7UfAHfJ4in9izDwSS8CAIRIHq8YhlLSBgWP2QZBj+lQdXAvETrMtBsqfHB3M8yqQJTsz4ifwhnDohGdEGzctTWKAXo+ZvhmvOLG6r055kCgPtXtYZQ54z1xy1OqEi7ji4+zdnK0aEYL21So1ofgkhJadbGP1OCX6rVkn7uf3sPPx4xylxw56F/2Qi58HgkgRSKKHic0qg7IcneW4z03Xi6y6X4BMxZWBOEt4HXz77x6jtPnssLh7D2xvrZV0K0j9fR3mmAKE7zzDgfQPrfhw9oSNAVi8BDGme8GLTRVa8k51QyjITfdDRt6zF2G+VlYUeeykYqQ7VU40AGq1VVMzGXWvDVt3DLZoEjPjA/7Ma/Pkmfd7R/xOilaJiC40FKa3yfpibSDme5oa+mFvBT8I7MUqqdspQD0jDAlKveDQPWwS6FUSH34so8vXwdsKGqh3hNBQrcz1/jNK3AZcirAFKMCDuondC75FlIstxQ1JqhbVzrcc= 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: 在 2024/1/3 01:11, David Howells 写道: > Gao Xiang wrote: > >>> down = start - round_down(start, PAGE_SIZE); >>> *_start = start - down; >>> *_len = round_up(down + len, PAGE_SIZE); >>> + if (down < start || *_len > upper_len) >>> + return -ENOBUFS; >> >> Sorry for bothering. We just found some strange when testing >> today-next EROFS over fscache. >> >> I'm not sure the meaning of >> if (down < start >> >> For example, if start is page-aligned, down == 0. >> >> so as long as start > 0 and page-aligned, it will return >> -ENOBUFS. Does it an intended behavior? > > Yeah, I think that's wrong. > > Does the attached help? > > David > --- Tested-by: Jia Zhu > > diff --git a/fs/cachefiles/io.c b/fs/cachefiles/io.c > index bffffedce4a9..7529b40bc95a 100644 > --- a/fs/cachefiles/io.c > +++ b/fs/cachefiles/io.c > @@ -522,16 +522,22 @@ int __cachefiles_prepare_write(struct cachefiles_object *object, > bool no_space_allocated_yet) > { > struct cachefiles_cache *cache = object->volume->cache; > - loff_t start = *_start, pos; > - size_t len = *_len, down; > + unsigned long long start = *_start, pos; > + size_t len = *_len; > int ret; > > /* Round to DIO size */ > - down = start - round_down(start, PAGE_SIZE); > - *_start = start - down; > - *_len = round_up(down + len, PAGE_SIZE); > - if (down < start || *_len > upper_len) > + start = round_down(*_start, PAGE_SIZE); > + if (start != *_start) { > + kleave(" = -ENOBUFS [down]"); > + return -ENOBUFS; > + } > + if (*_len > upper_len) { > + kleave(" = -ENOBUFS [up]"); > return -ENOBUFS; > + } > + > + *_len = round_up(len, PAGE_SIZE); > > /* We need to work out whether there's sufficient disk space to perform > * the write - but we can skip that check if we have space already > @@ -542,7 +548,7 @@ int __cachefiles_prepare_write(struct cachefiles_object *object, > > pos = cachefiles_inject_read_error(); > if (pos == 0) > - pos = vfs_llseek(file, *_start, SEEK_DATA); > + pos = vfs_llseek(file, start, SEEK_DATA); > if (pos < 0 && pos >= (loff_t)-MAX_ERRNO) { > if (pos == -ENXIO) > goto check_space; /* Unallocated tail */ > @@ -550,7 +556,7 @@ int __cachefiles_prepare_write(struct cachefiles_object *object, > cachefiles_trace_seek_error); > return pos; > } > - if ((u64)pos >= (u64)*_start + *_len) > + if (pos >= start + *_len) > goto check_space; /* Unallocated region */ > > /* We have a block that's at least partially filled - if we're low on > @@ -563,13 +569,13 @@ int __cachefiles_prepare_write(struct cachefiles_object *object, > > pos = cachefiles_inject_read_error(); > if (pos == 0) > - pos = vfs_llseek(file, *_start, SEEK_HOLE); > + pos = vfs_llseek(file, start, SEEK_HOLE); > if (pos < 0 && pos >= (loff_t)-MAX_ERRNO) { > trace_cachefiles_io_error(object, file_inode(file), pos, > cachefiles_trace_seek_error); > return pos; > } > - if ((u64)pos >= (u64)*_start + *_len) > + if (pos >= start + *_len) > return 0; /* Fully allocated */ > > /* Partially allocated, but insufficient space: cull. */ > @@ -577,7 +583,7 @@ int __cachefiles_prepare_write(struct cachefiles_object *object, > ret = cachefiles_inject_remove_error(); > if (ret == 0) > ret = vfs_fallocate(file, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, > - *_start, *_len); > + start, *_len); > if (ret < 0) { > trace_cachefiles_io_error(object, file_inode(file), ret, > cachefiles_trace_fallocate_error); >