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 E3F86C77B73 for ; Wed, 31 May 2023 09:11:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6D06E8E0002; Wed, 31 May 2023 05:11:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 659A18E0001; Wed, 31 May 2023 05:11:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4FA788E0002; Wed, 31 May 2023 05:11:29 -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 388FD8E0001 for ; Wed, 31 May 2023 05:11:29 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 10CA9AE3A4 for ; Wed, 31 May 2023 09:11:29 +0000 (UTC) X-FDA: 80849981898.24.0EC2471 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by imf10.hostedemail.com (Postfix) with ESMTP id 31278C001B for ; Wed, 31 May 2023 09:11:26 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=szeredi.hu header.s=google header.b="dJOv9q/Y"; dmarc=pass (policy=quarantine) header.from=szeredi.hu; spf=pass (imf10.hostedemail.com: domain of miklos@szeredi.hu designates 209.85.208.50 as permitted sender) smtp.mailfrom=miklos@szeredi.hu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1685524287; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ISkp7pEP+0sRQxyl+Kb79Eh0f1S6sp18TmXfWBaAyu4=; b=oIiZoOqGS79b4uwNNGaRt/ZMT2CF7L9XV9fpVEXx9VknkY00pasEXjd7H0cWZzPE19GeSS L11mthot6vPP6ADyr2HSMnKVkbRoQaLNsGnOB9tdjYR9kma6WiKsUmxaMahO4LDvgFj6nL l7zdoI/1Qepeoan3POytYDvxQEFAPRE= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=szeredi.hu header.s=google header.b="dJOv9q/Y"; dmarc=pass (policy=quarantine) header.from=szeredi.hu; spf=pass (imf10.hostedemail.com: domain of miklos@szeredi.hu designates 209.85.208.50 as permitted sender) smtp.mailfrom=miklos@szeredi.hu ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1685524287; a=rsa-sha256; cv=none; b=cKQs2jW2PXwZ2PCmGQ2VmaklnXxXyFqwXnZi1LQgqUm2ejR3bGzR9zXxdSo/iKZv1qSx2I wWClWV73W8ui6rEs7gVMSdfvvTcQQ2ARf2Gf0o1sVsbl+9LTyEZVFQqN44feudKNBHnU/y +JyJuR35yy0H4pH0BnWs0f8YUhDZUgM= Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-51496f57e59so5333747a12.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=dbB3/UkggMYqjRMOV0/qZ768GrUjNJswhWdZ3ipfTpWAd/NPIA12IhS/7J1t6iAXQ+ FUccgNyUTNd5DzntefN77cJoa8u2pE4UHtvX3/LizF8PsgHdAhjLMjygi9KgX89uNzUa bo52u08HO5II3gDw5YqnGC/6AONwX0VksANR75i9xfvlERQId8eI7jBcNNnQVlz6C3+L w5JCKlNSiRSKhpiPDbgprzfGe/yF/FgkCUcfb70epCrI4Ef2hCDUoy6ZDwz70MnJSUxL S2GUPk322H5Ubg57laKJctKbhfUkLNBSlVAl4jup3NS3anQtq6Pr+L2sDGHl8bpz18JZ +8JA== X-Gm-Message-State: AC+VfDxq/uczi1uqi/nwr+DHwmFf7rFJbNKJL8JylqH70N4PboFe8nW5 yIMxlJTGeVlwb+kfi3D4jYKJzQP1IRHb2gs9m+O8GQ== X-Google-Smtp-Source: ACHHUZ7qS7TmWM4+gPdkrDhL0bqZjnQfi2Xy2fkSny6o4W3m4Wn8XiF4R2Jdbdnsml8nAyt9sFK0bEVdcGYNFEZCdMs= 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-Rspamd-Queue-Id: 31278C001B X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: ff11uhonm3ftihmqej8pgtwqsozrdok3 X-HE-Tag: 1685524286-993237 X-HE-Meta: U2FsdGVkX1+XNgLHvAih7BVLx63xtXADr5f2jQUWEv02l6GXgzhl5H6Tw8wVwzCz+7pyD0UKZvbPxN+FxlWGI5LRULRxBawpjnYE5iSXoJxR+f+8op3o9BEh+v96uDEtGLQX+oIzTA1F+uU8uvGjI8UiJ8/dzJYbCdYL6mbUazY6/8Fdllm9bjxrAXFA1EUaMA83tLWA1ZOjzEZB84f/qo1GLhnIuHaR/xAhDRRx0yVQ8x9S2/i2ye01iIaOkjGmWT8WM0toCB2z+IGC7j/zgckg48e83XzPtU6TM7m9nnsN3/gj4eyFMsYEY1vclj/RzSB3HAkhYn5Ml2wWyBek3wXNyDqqt/UGgmv3wZixGuaN3294RJieRUwIELLNv3PmRr90tuWA0AFyhSInC91/0xLDE9U9IS4Qu7lcTltPq+x5f67fEyJu9i2tsHjkFc8zd6D/HExvDaRGMcaQl7KvDwQgjoDsMfGaJOfvXHrUFclP0JwKCmNveC5YWekzOM3l+SwazuYu2+P3X3aQsyfkglrtDS2mpqsjwJh/hpa3WTKVmtbvjeiM07JU2bYEvWKlYVqbPZPV1sDAzOM7jty1WCOcHYyAHx9Iganb0OBb83EX/NjItrL+i+rvImmhyCQF+B/MqwyiNvFZSnle62pPF8pGgDA+7TPiTpA61+llqQYcy7nYBYPlvr8+4GXNs5CrzR18HBwpVH0sB0r6VJL9o3MM1DqbVOnn0SxkjMLEsdaya+KXhQUHmnZUuOkZfpx46UczDvBpmbwC7abY1C3kWx98kBdPsE0+mrMOgkWHzM6BmqNfWRM5vwjtCGRMmU9dCIh2xw5tEndiXPG98qYjXcSg5mARMj11z+3Oiz9jyxFi9w9hIE1G9hgcUpYOhaXiV+EkIuJb5BvUV96efRaT+BXVkXI2gNZqo5uJKKCmfSB2VIXI+IWaVfGAIA+RBarweS9wGQgT+B3MyNFdubS b5WDBkdI B0yYR+uTzhiyeEk1/ifCkM1apHgEFvmf+0Vcg20Kkemo5asxecM+qr9lXTSkrtJB3y1PpcgzCkq9zxMhonjKvbKn64uJfKo/MQfzJp+/zP2kREIDBQUriCjDoCBP7tASpjmNqoqkAbW2OGvB/4k0fv7tef5O7eiN23BXGG3dvYfNWjX9UMM2Rs18xFlXMwk8b9FiGLWbdVyrMxlUM+fwptd1KrFbnFtz0vDU5CsfY02CEjJju5gfx9+4RHNJlhjMGUQSqJSgPdZWtj0wBCuwEkkOH3a7I5PlH6ad9oOUAI9XQjz7xTPzhTE9EafWcKHoojXE4O4NhRX6CZEOWPA+mytWWfw== 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: 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