Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp575000rwd; Wed, 31 May 2023 02:21:57 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6UtfBCWAIbsFWtQrTKtZwEGaryMJTxEFqjtR2ZyfafkPvm5pvYtJlnU7uaIVqifSsoBL3Z X-Received: by 2002:a05:6808:bc3:b0:396:d10:43a0 with SMTP id o3-20020a0568080bc300b003960d1043a0mr3822329oik.46.1685524917618; Wed, 31 May 2023 02:21:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685524917; cv=none; d=google.com; s=arc-20160816; b=vj8vpc3aMmrByLhlcJ1i35walTwkz0umuDTzw4dNC5Ckhf8OnJsLPjuUx3dCaiG8zc vLunGsI6zmuew0/ZQyuoDebGHctjGcaHrfREhVmXIF6zR7WFMLFq8dbdsVN3qHWYdT41 Q1dX0w+C7RUWh6hXArmLs3juAmfsH3ISHgC8qzloURtbZznNr9xYO+R1sDBjmyVlD1mr KK+w+M8msriegojCF/SAhP3Fm4pZmeWvBnMQI41XRWSIoVqAN2rzdlcAHkuuUI/wIv7z 2gpPsardzZAfvLq1iH/MM9wgP7mQnV8HZsY2wOo3WWwGeyuJlHdkEyzpGk+roNA3GPA9 XCzw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=ISkp7pEP+0sRQxyl+Kb79Eh0f1S6sp18TmXfWBaAyu4=; b=PVjBoAG+wNvYKR1zuv2TuTmSgFK6N3kyUI9d4LaSTMDP1YpRIOPpt6goYYnV4Ika6N PvMwS7nmlaeofY/6a7tq++UtuR7BDpaK6KlLY3C8FhZyxljMDDUtJsjSn/K2e6VkoPo8 2Vdmm0A00TPxkBpsD7e+9KWfrBkdTiVlBYroLcfv291YvW1/3Lxqok4i7+Vo1W/ZvUJJ Vv7hJebJgCp8DWm066HwpLJ2aK0Sx2sGYGeoTNIAmp6G0BdfZCJ0ygoio8LWg/h5SA7M TAwFKAMLKMOZjZHMx75UzKZxAP6dhcKRewZ7xmVsEETAbnccRkg3+I0j5t+SwhhM/v1A kheg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@szeredi.hu header.s=google header.b="dJOv9q/Y"; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=szeredi.hu Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bk3-20020a17090b080300b002567ce1c798si629528pjb.137.2023.05.31.02.21.43; Wed, 31 May 2023 02:21:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@szeredi.hu header.s=google header.b="dJOv9q/Y"; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=szeredi.hu Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233807AbjEaJLr (ORCPT + 99 others); Wed, 31 May 2023 05:11:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235372AbjEaJLq (ORCPT ); Wed, 31 May 2023 05:11:46 -0400 Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 03B231B5 for ; Wed, 31 May 2023 02:11:26 -0700 (PDT) Received: by mail-ed1-x532.google.com with SMTP id 4fb4d7f45d1cf-51496f57e59so5333746a12.2 for ; Wed, 31 May 2023 02:11:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szeredi.hu; s=google; t=1685524285; x=1688116285; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=ISkp7pEP+0sRQxyl+Kb79Eh0f1S6sp18TmXfWBaAyu4=; b=dJOv9q/YK0iEqQ5zNLLe/oNHi3RAcMruLF/Ly97IM4UKyWQ6BU0vbwmy5XObs9rKiq L78AyjiMCnhu3YMlQcCsm1FY9ZM34qzmrdOcgBgszstMUHq1IAxUroiCHjwKUuIt+D8H mBFmnCmCovFiFJD1nOdBlhjqUIi/4hrYsHPew= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685524285; x=1688116285; h=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=ISkp7pEP+0sRQxyl+Kb79Eh0f1S6sp18TmXfWBaAyu4=; b=EqcgSp1HBkKFX37+U7IIygrXBObyw4N3cM+KyqnZG1JrufCW0P2BZ8kiINnVFaTGdi jPZEH664cstw2yLjLKFN1iPVUPstDWzVOvHqXcimODyodygDZIcX9mk+RQ3y8ipP8Zsw bh0cp5Np+ngPZbzOWjWBD/hi0wHEIJTIHe4eRL4MQagcDuUy3vMsBMiZdjxZOEiSHyMv K1gA7SraZ9sdL4uVBu1Y0HYFj/wdwsqic7e8YZ8BmDajvyR1S5F9OGpsuYxbXsmBXALL Qvrs9eltB4Cx5GIzi8fO+Fp87pff+Td9DogRIAKf/JLiirBgGCp4MoI6hXDrvEuii2fn NbcA== X-Gm-Message-State: AC+VfDx4Fp1orDif4bJWlCI8PLF7s0W16sy/fCfWh9BUhMbuBQZDbDOt z8w+6Q7tC/ELY24Y0AKtHfYl6tOtlzFiCKP7SRyvXg== X-Received: by 2002:a17:907:7f23:b0:969:9fd0:7ce7 with SMTP id qf35-20020a1709077f2300b009699fd07ce7mr5700403ejc.11.1685524285339; Wed, 31 May 2023 02:11:25 -0700 (PDT) MIME-Version: 1.0 References: <20230531075026.480237-1-hch@lst.de> <20230531075026.480237-11-hch@lst.de> In-Reply-To: <20230531075026.480237-11-hch@lst.de> From: Miklos Szeredi Date: Wed, 31 May 2023 11:11:13 +0200 Message-ID: Subject: Re: [PATCH 10/12] fuse: update ki_pos in fuse_perform_write To: Christoph Hellwig Cc: Matthew Wilcox , Jens Axboe , Xiubo Li , Ilya Dryomov , Alexander Viro , Christian Brauner , "Theodore Ts'o" , Jaegeuk Kim , Chao Yu , Andreas Gruenbacher , "Darrick J. Wong" , Trond Myklebust , Anna Schumaker , Damien Le Moal , Andrew Morton , linux-block@vger.kernel.org, ceph-devel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, linux-xfs@vger.kernel.org, linux-nfs@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org On Wed, 31 May 2023 at 09:51, Christoph Hellwig wrote: > > Both callers of fuse_perform_write need to updated ki_pos, move it into > common code. > > Signed-off-by: Christoph Hellwig > Reviewed-by: Damien Le Moal > --- > fs/fuse/file.c | 23 ++++++++++------------- > 1 file changed, 10 insertions(+), 13 deletions(-) > > diff --git a/fs/fuse/file.c b/fs/fuse/file.c > index 97d435874b14aa..e60e48bf392d49 100644 > --- a/fs/fuse/file.c > +++ b/fs/fuse/file.c > @@ -1329,7 +1329,10 @@ static ssize_t fuse_perform_write(struct kiocb *iocb, > fuse_write_update_attr(inode, pos, res); > clear_bit(FUSE_I_SIZE_UNSTABLE, &fi->state); > > - return res > 0 ? res : err; > + if (!res) > + return err; > + iocb->ki_pos += res; > + return res; > } > > static ssize_t fuse_cache_write_iter(struct kiocb *iocb, struct iov_iter *from) > @@ -1341,7 +1344,6 @@ static ssize_t fuse_cache_write_iter(struct kiocb *iocb, struct iov_iter *from) > struct inode *inode = mapping->host; > ssize_t err; > struct fuse_conn *fc = get_fuse_conn(inode); > - loff_t endbyte = 0; > > if (fc->writeback_cache) { > /* Update size (EOF optimization) and mode (SUID clearing) */ > @@ -1375,19 +1377,20 @@ static ssize_t fuse_cache_write_iter(struct kiocb *iocb, struct iov_iter *from) > goto out; > > if (iocb->ki_flags & IOCB_DIRECT) { > - loff_t pos = iocb->ki_pos; > + loff_t pos, endbyte; > + > written = generic_file_direct_write(iocb, from); > if (written < 0 || !iov_iter_count(from)) > goto out; > > - pos += written; > - > - written_buffered = fuse_perform_write(iocb, mapping, from, pos); > + written_buffered = fuse_perform_write(iocb, mapping, from, > + iocb->ki_pos); > if (written_buffered < 0) { > err = written_buffered; > goto out; > } > - endbyte = pos + written_buffered - 1; > + pos = iocb->ki_pos - written_buffered; > + endbyte = iocb->ki_pos - 1; > > err = filemap_write_and_wait_range(file->f_mapping, pos, > endbyte); > @@ -1399,17 +1402,11 @@ static ssize_t fuse_cache_write_iter(struct kiocb *iocb, struct iov_iter *from) > endbyte >> PAGE_SHIFT); > > written += written_buffered; > - iocb->ki_pos = pos + written_buffered; > } else { > written = fuse_perform_write(iocb, mapping, from, iocb->ki_pos); > - if (written >= 0) > - iocb->ki_pos += written; > } > out: > inode_unlock(inode); > - if (written > 0) > - written = generic_write_sync(iocb, written); Why remove generic_write_sync()? Definitely doesn't belong in this patch even if there's a good reason. Sorry, didn't notice this in the last round. Thanks, Miklos