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 F027CC77B75 for ; Mon, 22 May 2023 14:19:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 69699900003; Mon, 22 May 2023 10:19:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6461D900002; Mon, 22 May 2023 10:19:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 534EF900003; Mon, 22 May 2023 10:19:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 4504A900002 for ; Mon, 22 May 2023 10:19:54 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 13A3BADC71 for ; Mon, 22 May 2023 14:19:54 +0000 (UTC) X-FDA: 80818099908.07.26A8981 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf23.hostedemail.com (Postfix) with ESMTP id AA0E9140019 for ; Mon, 22 May 2023 14:19:51 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=szeredi.hu header.s=google header.b=bW3JxzSW; spf=pass (imf23.hostedemail.com: domain of miklos@szeredi.hu designates 209.85.218.49 as permitted sender) smtp.mailfrom=miklos@szeredi.hu; dmarc=pass (policy=quarantine) header.from=szeredi.hu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684765192; 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=VSL7mwwp7mP3i/A2Ha5ZWYNP2l8nV9xWCZ9dDdVJyrE=; b=3oYqnF/ksPoN+18GATYNHv6q9pY0mLyMcN9a9NDJMPntBWyQSd9Y0l2Rl839MXGLaqFvJo iVTHyBDoMjJvi7LS7lFk0AYEH3KRLWDNjEwOGY7Hw3Tasljnc/I+fdV9cVVZ98WY0QPlJt Ftcm1R/k6FhoWH/9utwyQlmL07Pce8Y= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684765192; a=rsa-sha256; cv=none; b=GOmXeuMarppkfp9PqTLxhVCuNWCaWWCwBRr0CoEZC1ZDvRvWJYGyb2jMA+qSf7MRx5Gd5j R6/RE4DMM4mWU9mR0eypMHjQ8Za06NzaTuiR8sh8+bLRp2+j3O+ya3+z9TsIizKFZNWY4X 6ncHOGnljUrfppSwHEyRM3u6WNKmpsc= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=szeredi.hu header.s=google header.b=bW3JxzSW; spf=pass (imf23.hostedemail.com: domain of miklos@szeredi.hu designates 209.85.218.49 as permitted sender) smtp.mailfrom=miklos@szeredi.hu; dmarc=pass (policy=quarantine) header.from=szeredi.hu Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-96f53c06babso782556966b.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=XUdecZoMAVsE4aPiGUzxfaeZMQ4ugAfYjWKwqStwqk5OMLk4eOTl1HlDcX5jB6Vnbb eZBvOFjUdV6Lc7iGRfgz49Hq8ZrTiLAQKlqfKKyxTj+Cem0HzcVRJTf75h87Kxcklih6 8Pn08ewImElSMbZ4Dkxu+GfZ2XqNxi3yR5tbgBKlgQ9ibHTvsXWMvlVjmU7PIlBX1+hX TJteM6lcwF5LBIvmcYvmTfrH0aJhTzD0Mlfl2c0s931UpChXGmWtR7oCjQOwmvYNPTur IEDyyautPElmm5cXuAZi+naO4AKH09HFbdEjGum8QaqXMyX0Krblb9Zx6k7DIypwiFmQ WTNQ== X-Gm-Message-State: AC+VfDx29vsEEGz6EIr5BIAqzR6L4VC2om/y4fLv+VnDYLNnBda7kQHq hhHT6tFQfNJGwpybZNSU+Madko+NwGUEZdrd81BDew== X-Google-Smtp-Source: ACHHUZ5pTZpoagrq7BPdRNACytZjcbnwwAzdd4/4F4mMBgFIR5olByJvr8DzGqhjgDPmmSOeMIBmAwCLlQut/WuHsuo= 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-Stat-Signature: hisyszw71igxz5ag7h6de8wyw5nurfab X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: AA0E9140019 X-Rspam-User: X-HE-Tag: 1684765191-555037 X-HE-Meta: U2FsdGVkX19GcWmi+DFUg8Ss0E/iHPNZBjp52kuynQignxtrJdZB0xZ14MI5Fuy69H8xGvNdWWRIeGDn0dckbxyx2WFFIj4IInBgoC8184J3CzcNnNYhaPpGBzqjpi8aRJQ8XYvP/8xTXOjgbXvN7OFeo7ojkMCbx7tijV4QM4FCvcqgpAnSpbeIcRervO2C1KhqEVj3z+4ZYc8Pj2KjMI0kxlpp+EktYBG22WA3E2Ff0o4l2lhXOEvf4qDjgCqKMN055mUelQeaSZP9ioT7teQgSSfW2YFFqjpGoOI+/ZxgjwKm851GX7NwYHtcuOAD3G3JrHVLVVPZXfjlCExyHwEqJL4iJs12aX5RUS/Wz2BKx/+gshBbTXISx/+0DQ48zinL+aguYFLLk7Vuz1ZOJLQnFiwM1Om6AyqT0w+65II1LnaSftzcHwb70xvIzLdibU1Fe//YlUtKaM9TTaZP4IZf+bdKAf5pEpEUFtgwZtf+mFyd9ZH4sLNgrGXG+jbxg6FM3XrlbtCpLr1Zyzqjc+OvbxNlGpknXXrl+90mR1/6I2uYQccPx/JqXCwdTqbhMdb2jV0g/05UWU+NBndeICHJdX81ZMQAfD6PPrMGe6VsuRsHXQ4AWL3aZj9Rsb93nowplOZhakpZwpFA7ApFC7YHwOG1eAVSsdAg2AVz/nbxB9CkReO3PmmU+o8tMpLfm4Z4tnbJn+v/L2wgbvsidsEnf1+Gz9FFeblixNIJ6lp+LsTLYbiQA/q8HEZaXMh9Y4VX/b0AGC5Hx0bbPmikDqHDLqDYwIoJ//0u17QUNnJxo9OwJCT5+3WmNisRfiX/4uVcx7ZM9DdKcsJwBpQ6qJI0NDQrHY1DLmuL4QCLZ8w87Kxrhrxd9l7rjZEY/Im67xuy6vX7UTs7qHcvRkcVvGXp88uF5x8oMqdmDYMKbnsY4b7SDIl2K4DeOE/Ttd3ug6C2x+PlvEksZTtkSpi adY3Wk6X dFwNX3TTVWWQWwaKjh0MwdwNQvsHaBvDV6VDvjVgbixhj+ZOMvA3X4wyHoVyeuGxWe0lw8vwOtQga8ec9ZTe6Fzjg8p6uAQWmQhRIUph4rAYeIRQsiSdMX3z99Tzb4K2ShgKcTuWIBs9QAqzp91aEzps1pjj9Cy5NhXX9EZB/IRbQRAdJVRdpAcIkP7wc3dQvKDIKrElT8GVuxIbS1pYWeBWbjx2/mUDPfW4PP9sl60cM1VsZ8SDUK7DRuri1s/8fBPLRrOw249diy8cy18c7IYxDww== 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 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