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 X-Spam-Level: X-Spam-Status: No, score=-11.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 25BDCC43461 for ; Fri, 4 Sep 2020 07:48:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DBF3120748 for ; Fri, 4 Sep 2020 07:48:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729659AbgIDHsk (ORCPT ); Fri, 4 Sep 2020 03:48:40 -0400 Received: from mx2.suse.de ([195.135.220.15]:46406 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726415AbgIDHsj (ORCPT ); Fri, 4 Sep 2020 03:48:39 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 90A3CACC8; Fri, 4 Sep 2020 07:48:38 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id 741CB1E12D1; Fri, 4 Sep 2020 09:48:37 +0200 (CEST) Date: Fri, 4 Sep 2020 09:48:37 +0200 From: Jan Kara To: Gabriel Krisman Bertazi Cc: viro@zeniv.linux.org.uk, linux-fsdevel@vger.kernel.org, jack@suse.cz, khazhy@google.com, kernel@collabora.com Subject: Re: [PATCH v2 2/3] direct-io: don't force writeback for reads beyond EOF Message-ID: <20200904074837.GB2867@quack2.suse.cz> References: <20200903200414.673105-1-krisman@collabora.com> <20200903200414.673105-3-krisman@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200903200414.673105-3-krisman@collabora.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org On Thu 03-09-20 16:04:13, Gabriel Krisman Bertazi wrote: > If a DIO read starts past EOF, the kernel won't attempt it, so we don't > need to flush dirty pages before failing the syscall. > > Suggested-by: Jan Kara > Signed-off-by: Gabriel Krisman Bertazi This patch looks good to me. You can add: Reviewed-by: Jan Kara Honza > --- > fs/direct-io.c | 24 +++++++++++------------- > 1 file changed, 11 insertions(+), 13 deletions(-) > > diff --git a/fs/direct-io.c b/fs/direct-io.c > index 04aae41323d7..43460c8e0f90 100644 > --- a/fs/direct-io.c > +++ b/fs/direct-io.c > @@ -1188,19 +1188,9 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, > memset(dio, 0, offsetof(struct dio, pages)); > > dio->flags = flags; > - if (dio->flags & DIO_LOCKING) { > - if (iov_iter_rw(iter) == READ) { > - struct address_space *mapping = > - iocb->ki_filp->f_mapping; > - > - /* will be released by direct_io_worker */ > - inode_lock(inode); > - > - retval = filemap_write_and_wait_range(mapping, offset, > - end - 1); > - if (retval) > - goto fail_dio; > - } > + if (dio->flags & DIO_LOCKING && iov_iter_rw(iter) == READ) { > + /* will be released by direct_io_worker */ > + inode_lock(inode); > } > > /* Once we sampled i_size check for reads beyond EOF */ > @@ -1210,6 +1200,14 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, > goto fail_dio; > } > > + if (dio->flags & DIO_LOCKING && iov_iter_rw(iter) == READ) { > + struct address_space *mapping = iocb->ki_filp->f_mapping; > + > + retval = filemap_write_and_wait_range(mapping, offset, end - 1); > + if (retval) > + goto fail_dio; > + } > + > /* > * For file extending writes updating i_size before data writeouts > * complete can expose uninitialized blocks in dumb filesystems. > -- > 2.28.0 > -- Jan Kara SUSE Labs, CR