Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp3000248rwd; Mon, 22 May 2023 07:20:32 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5cxlTQpT/E/fQs8QtRh1Ljsm7JEAk4dSqI4RFL24HXjg5MrQiVL6ewTM0Exm4vr2qdu2/V X-Received: by 2002:a17:90a:f6ce:b0:253:2995:f4a6 with SMTP id er14-20020a17090af6ce00b002532995f4a6mr10962026pjb.38.1684765231741; Mon, 22 May 2023 07:20:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684765231; cv=none; d=google.com; s=arc-20160816; b=Kxf6gFuIEj4VYXj+utDT6FIp6KVezo0v+oFq54cJC06ISC69CZkQk/FWcSnIb0++b7 T+B0xIMeXYH2A4lVg+dqcq0ud4L4GfC5O/HYsDfzvqZVzSrQPrI2SZ3yTLPveyMK633g 8PqfJclI86P+5pX8T1C7P9siKocHes/xXvBgDBfpXwwrNELS4aMP5zNAhpXkI5jvuHzS KveysXJcWIlHmKU/wTWttzEdzBgDKbnXDx9kaWhRKQMI7KAdQwJ7Aht0vk9KvDrfmuLP Uqasl+BR4H3Y/Qs4iXesMAxFggBvH81FtAdUfqVgn7PEv/lYavcii97CIgjRHP9c7Hfr ezMQ== 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=VSL7mwwp7mP3i/A2Ha5ZWYNP2l8nV9xWCZ9dDdVJyrE=; b=GQ7Z72MHfaVrPwWIm8/Ae/9z1ZddmqTYtN8UdjApH7ZcEGp6XELSgPsohuGAKMC9dH ebzunPpsRZkgZZx1vWcvoMuUSmbT1A4OJm1gAYmSQKFN7k0qt60xteUUdFxKl0xwCu0e aRH/FW1NNh6fq2c8mUfUVxDFn1FssqbaKVUqH5A3bE8W0vO9XODsnw2NWF24Lwyjrh7s MRPgWq+SZ0ubo9gOeVjJrqE/GfaZK3ldW20s+isIvkOoeMsJyA8LLu+A2MXQIHzhBEsS R6TmpaiHB2VfFT49bqSQEoETHQqjwJGhdna7gcPFpB0bKKfqwqIXN7/1YonlvKOLsHrT fAtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@szeredi.hu header.s=google header.b=bW3JxzSW; 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 mi17-20020a17090b4b5100b002507aba141asi4797366pjb.171.2023.05.22.07.20.15; Mon, 22 May 2023 07:20:31 -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=bW3JxzSW; 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 S231210AbjEVOT4 (ORCPT + 99 others); Mon, 22 May 2023 10:19:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47902 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233628AbjEVOTy (ORCPT ); Mon, 22 May 2023 10:19:54 -0400 Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com [IPv6:2a00:1450:4864:20::633]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 63383ED for ; Mon, 22 May 2023 07:19:51 -0700 (PDT) Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-96f53c06babso782556566b.3 for ; Mon, 22 May 2023 07:19:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szeredi.hu; s=google; t=1684765190; x=1687357190; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=VSL7mwwp7mP3i/A2Ha5ZWYNP2l8nV9xWCZ9dDdVJyrE=; b=bW3JxzSWL903VRTFCHvbgK/kSmmhNGzjPmv2oTgKuUeY/4UGuj+rpVpSRqU0fLX71Z 9x0WYxajpqEHWpasb3FMt2QPMwFvEXG1qzy09fFvoatRiySxfHmtlreAhXwdf72AH0EA uaD7yDQ7ocfBWwGajHKOT7vpFDgho5apenxJE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684765190; x=1687357190; 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=VSL7mwwp7mP3i/A2Ha5ZWYNP2l8nV9xWCZ9dDdVJyrE=; b=V9yRxngSIAFBao9eosogBosK6pKmOdGPa7d/HZSDTJy3Vg2gVmJe3blaWZLRK4jwEH ThJqmWikaIAxyAvC8REucgSnpVKLk6aU+8tT31UqR43d28pja9gd+3FUwp00M7J1vSkb xQTe5//yUKE8DPHO+jE+i0FZuB9alL2ebxlkzpfJb5JHH9cjV6WA2rz7ML/eP+2nwc63 MOb++fKjkY7XQukjzGFMBCEhHkUdZPABKE0oxumW4taIbLjnnvDYBTXaSxtuVcuL9+WV c4MyzE6mN7hnseeg7XVa6jRKQoUQm6fMTGYS8w3kD8LuW7ee0x2kYz+79k7JtyaGI0Es z/IQ== X-Gm-Message-State: AC+VfDyiCM7SD7o5bAqPK6u7psWC0c3buGEauVyc4294howx4DgFJxdU 4W7aNsAdulT/BysuUgGrnkiGL6MTGoWsuotWrh91gQ== X-Received: by 2002:a17:907:25c2:b0:969:edf8:f73b with SMTP id ae2-20020a17090725c200b00969edf8f73bmr9314077ejc.60.1684765189889; Mon, 22 May 2023 07:19:49 -0700 (PDT) MIME-Version: 1.0 References: <20230519093521.133226-1-hch@lst.de> <20230519093521.133226-11-hch@lst.de> In-Reply-To: <20230519093521.133226-11-hch@lst.de> From: Miklos Szeredi Date: Mon, 22 May 2023 16:19:38 +0200 Message-ID: Subject: Re: [PATCH 10/13] fs: factor out a direct_write_fallback helper 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, "open list:F2FS FILE SYSTEM" , 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 autolearn=ham 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 Fri, 19 May 2023 at 11:36, Christoph Hellwig wrote: > > Add a helper dealing with handling the syncing of a buffered write fallback > for direct I/O. > > Signed-off-by: Christoph Hellwig > --- > fs/libfs.c | 36 ++++++++++++++++++++++++++++ > include/linux/fs.h | 2 ++ > mm/filemap.c | 59 ++++++++++------------------------------------ > 3 files changed, 50 insertions(+), 47 deletions(-) > > diff --git a/fs/libfs.c b/fs/libfs.c > index 89cf614a327158..9f3791fc6e0715 100644 > --- a/fs/libfs.c > +++ b/fs/libfs.c > @@ -1613,3 +1613,39 @@ u64 inode_query_iversion(struct inode *inode) > return cur >> I_VERSION_QUERIED_SHIFT; > } > EXPORT_SYMBOL(inode_query_iversion); > + > +ssize_t direct_write_fallback(struct kiocb *iocb, struct iov_iter *iter, > + ssize_t direct_written, ssize_t buffered_written) > +{ > + struct address_space *mapping = iocb->ki_filp->f_mapping; > + loff_t pos = iocb->ki_pos, end; At this point pos will point after the end of the buffered write (as per earlier patches), yes? > + int err; > + > + /* > + * If the buffered write fallback returned an error, we want to return > + * the number of bytes which were written by direct I/O, or the error > + * code if that was zero. > + * > + * Note that this differs from normal direct-io semantics, which will > + * return -EFOO even if some bytes were written. > + */ > + if (unlikely(buffered_written < 0)) > + return buffered_written; > + > + /* > + * We need to ensure that the page cache pages are written to disk and > + * invalidated to preserve the expected O_DIRECT semantics. > + */ > + end = pos + buffered_written - 1; So this calculation is wrong. AFAICS this affects later patches as well. Thanks, Miklos