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 83A32C001E0 for ; Wed, 9 Aug 2023 09:54:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ED4246B0071; Wed, 9 Aug 2023 05:54:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E5D776B0074; Wed, 9 Aug 2023 05:54:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CFE0E8E0001; Wed, 9 Aug 2023 05:54:51 -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 BBF2D6B0071 for ; Wed, 9 Aug 2023 05:54:51 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 87A2C16091B for ; Wed, 9 Aug 2023 09:54:51 +0000 (UTC) X-FDA: 81104107182.26.3893770 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by imf30.hostedemail.com (Postfix) with ESMTP id 6C00980005 for ; Wed, 9 Aug 2023 09:54:49 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=yGUxVjnb; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=lEJSvxxH; spf=pass (imf30.hostedemail.com: domain of jack@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=jack@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691574889; a=rsa-sha256; cv=none; b=tlsCJac2zV2voZv6l89d8IEJbifIYJAvcMucxO6kAFQ99GQKcmDOo6vvduk0ojU4npRS5b cXvVzFyMK4n8mg+nDbyNyNVK/0KVBTEvEcam8ypqlym7qYJRVpuApmgK5IlDvbNZG2BSOO hjgqdLUbbHl9+KchFKkFSFIqU44spOY= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=yGUxVjnb; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=lEJSvxxH; spf=pass (imf30.hostedemail.com: domain of jack@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=jack@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691574889; 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=dyhy9ry952tksH6A814qNxG1hC4mb7gokwKEbZjKvSA=; b=Tq2fVMMvdJtU80wroX77tImiMpJC3NiIvqmRGIJDm3RL2N07PRiYgUofNyDY649VYhXWnO 4etKYSCtw/Ir3jQ6gveyxIEVUfDOJpfs/5wzO3+Gn5V8+2U/uZqAAST9NkrAj1DQqj8+GR RBlrlFd4mOXCGfdogWsA5hxJqT0JII8= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 1EC6121862; Wed, 9 Aug 2023 09:54:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1691574888; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dyhy9ry952tksH6A814qNxG1hC4mb7gokwKEbZjKvSA=; b=yGUxVjnbpk73WwmI2R78FfU2llw+nXvBBmYxzBt48F7HA2NctrtcySode/APmgGmAt9T8L 5fy9wh4ugak1gjXz07xA75GJfuTArxQUVM6WCqMdd4MxVq+ayCHC3TNMzjrfScEOJmcOO3 0ocyI15+IZNVJMAm2O3+reeOjJXO2Dg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1691574888; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dyhy9ry952tksH6A814qNxG1hC4mb7gokwKEbZjKvSA=; b=lEJSvxxH8ZwOgRrwSyllOoreeiKMv/DZbR0rz3QyhoWrfPelkDDu+X6DEH0rONAD/1cisn Oamd3YO5Sb+iYeDg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 0DC36133B5; Wed, 9 Aug 2023 09:54:48 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id QGthA2hi02RGHwAAMHmgww (envelope-from ); Wed, 09 Aug 2023 09:54:48 +0000 Received: by quack3.suse.cz (Postfix, from userid 1000) id 8A435A0769; Wed, 9 Aug 2023 11:54:47 +0200 (CEST) Date: Wed, 9 Aug 2023 11:54:47 +0200 From: Jan Kara To: Hugh Dickins Cc: Christian Brauner , Andrew Morton , Oleksandr Tymoshenko , Carlos Maiolino , Jeff Layton , Chuck Lever , Jan Kara , Miklos Szeredi , Daniel Xu , Chris Down , Tejun Heo , Greg Kroah-Hartman , Matthew Wilcox , Christoph Hellwig , Pete Zaitcev , Helge Deller , Topi Miettinen , Yu Kuai , linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH vfs.tmpfs 4/5] tmpfs: trivial support for direct IO Message-ID: <20230809095447.7iturpglkvbzyvmg@quack3> References: <7c12819-9b94-d56-ff88-35623aa34180@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7c12819-9b94-d56-ff88-35623aa34180@google.com> X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 6C00980005 X-Stat-Signature: w97zf4m6y6a3mzm65eeo1emmphxexdgq X-Rspam-User: X-HE-Tag: 1691574889-863581 X-HE-Meta: U2FsdGVkX1/Vhqky08ENftU86QKSJ4nZJDSGP1mzv/G4wGMiOhbcI8BO14ZgzRvJeAUgdGmtf+ipLb4LT+Zr+qsRcCg8SgNkRwAfLSxLtA3zFr1Nh255IuJRlRpIGD5Zopv3tZ43MGOEglKcpZJS8p3sCMvKavfQwS0FSl/AgxICnY+Z6+ri0S8//iZDbFOU96DDbjV3zcoLuMJ44HJccc7uK1yH4uinxoKAnPlzvVJ3IUULya6Z56mxWCjrD87RH7hOzLnWNJezFMakIWeOUNDe+9bcLnrUDEJtddoorRAOwWoc6US1blpuIbUc7S8NsmRgcJCDMjk1wsjbNYHfDtR4FZP33hg6/uMBonRtikop/rZOmTzYBEZ0Fo6Jaz03T8yy9eJrmDTk2IMuRK6C3bajIqBh4MyH5AqKA+2vFyI7rEwNMSISkVHePZKYKqhtpJS/pdBKpNjIoDoVmWLw6PtB35F2H8cvXz0Y7infugQ+03kk4JFq9Ui6LxSxNi714+A2ehvMC4Zn2FExBrwkclIQFbbhC/JXILcrfOZjtvfZb0OqoV9LnJKNILWrQ5tVQlZpbNhkyOzpPT5FJtKsuaJUsUKePuoUAQtRnTNv4b2uYW9h03dfe7W9pPDTvn0i5EnRFR/Krse5V0wmklNm0InD8ERyeDx4k+tVLBTUSa9lpQJ0jY+Q7S3VYhFIs7kGtTO9bIImzgYrDOAvkwCnWGVQC0cCTf1l8RT/Wo96MR69gj6r/jfLEbLmBPalzUCpFAiywtshECcYm9QYvDVzpMYqC1bjYPC7aYy52LKuAp8n302TJo0v3qAZJIE9gbCJfwnvcYOhPc7aVBNoUOj90n0IXOSUgta2NDSQq82/ns4JCITaPBuct5f0huA8Ar0/u0T2VQGQdKOWkrLtAUV7z77NRJSWTPx0RzllQpzCygMMUhSXr0B4GQppTk+o87kA9mb4MB46ZXe5/2i6tOP n8OtVrGq OEb+q4TA0a/gie9srXu49h5cx5vmi2VOl+ub2ThTDl9lrYYaYl0QHrj/ArY2rFT000T/gWQv5aWytvU9H+E8Qm75u19RlsdgwagOt4wVUnuTlCWJRzNdP1sPZrByDyVIRJe4by9ETvG1XhAszJMVVXF2HDwo/ulPJMuMajuYGW8w9jW8xTibU67/3pWQirApnsj2QP8WmcuTI/9x0zhzA6AQYklWxWiXJsXGqxfDR2QypSAVQ1XJNJaxELyZB6F6+FL1+f1XX1PThray2wW2hIDbFafDYmoSVV475d3qcIMqTDpTRCYW7zN1HGQ== 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 Tue 08-08-23 21:34:54, Hugh Dickins wrote: > Depending upon your philosophical viewpoint, either tmpfs always does > direct IO, or it cannot ever do direct IO; but whichever, if tmpfs is to > stand in for a more sophisticated filesystem, it can be helpful for tmpfs > to support O_DIRECT. So, give tmpfs a shmem_direct_IO() method, of the > simplest kind: by just returning 0 done, it leaves all the work to the > buffered fallback (and everything else just happens to work out okay - > in particular, its dirty pages don't get lost to invalidation). > > xfstests auto generic which were not run on tmpfs before but now pass: > 036 091 113 125 130 133 135 198 207 208 209 210 211 212 214 226 239 263 > 323 355 391 406 412 422 427 446 451 465 551 586 591 609 615 647 708 729 > with no new failures. > > LTP dio tests which were not run on tmpfs before but now pass: > dio01 through dio30, except for dio04 and dio10, which fail because > tmpfs dio read and write allow odd count: tmpfs could be made stricter, > but would that be an improvement? > > Signed-off-by: Hugh Dickins Yeah, we are not quite consistent about whether it is better to silently fallback to buffered IO or return error among filesystems. So I guess whatever you like. Feel free to add: Reviewed-by: Jan Kara Honza > --- > mm/shmem.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/mm/shmem.c b/mm/shmem.c > index 7420b510a9f3..4d5599e566df 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -2720,6 +2720,16 @@ shmem_write_end(struct file *file, struct address_space *mapping, > return copied; > } > > +static ssize_t shmem_direct_IO(struct kiocb *iocb, struct iov_iter *iter) > +{ > + /* > + * Just leave all the work to the buffered fallback. > + * Some LTP tests may expect us to enforce alignment restrictions, > + * but the fallback works just fine with any alignment, so allow it. > + */ > + return 0; > +} > + > static ssize_t shmem_file_read_iter(struct kiocb *iocb, struct iov_iter *to) > { > struct file *file = iocb->ki_filp; > @@ -4421,6 +4431,7 @@ const struct address_space_operations shmem_aops = { > #ifdef CONFIG_TMPFS > .write_begin = shmem_write_begin, > .write_end = shmem_write_end, > + .direct_IO = shmem_direct_IO, > #endif > #ifdef CONFIG_MIGRATION > .migrate_folio = migrate_folio, > -- > 2.35.3 > -- Jan Kara SUSE Labs, CR