From patchwork Thu Sep 15 23:07:48 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dave Chinner X-Patchwork-Id: 9334889 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2D598601C2 for ; Thu, 15 Sep 2016 23:08:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 10B1129C72 for ; Thu, 15 Sep 2016 23:08:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 039DE29C77; Thu, 15 Sep 2016 23:08:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE, RDNS_NONE autolearn=no version=3.3.1 Received: from ml01.01.org (unknown [198.145.21.10]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 98E1C29C72 for ; Thu, 15 Sep 2016 23:08:18 +0000 (UTC) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 05B241A1F03; Thu, 15 Sep 2016 16:07:58 -0700 (PDT) X-Original-To: linux-nvdimm@lists.01.org Delivered-To: linux-nvdimm@lists.01.org Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by ml01.01.org (Postfix) with ESMTP id 265A41A1F03 for ; Thu, 15 Sep 2016 16:07:56 -0700 (PDT) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A2CwCwBtKdtXEAI1LHldHAEBBAEBCgEBgzoBAQEBAR6BU4ZzhkCVcwEBAQEBAQaMfYYdgg+CA4YYAgIBAQKBYTkUAQIBAQEBAQEBBgEBAQEBAQEBN0CEYQEBAQMBOhwjBQsIAxgJJQ8FJQMHAxcTiEIHwjUBCwEkHoVLhReKHAWUFYVTj0+Pb0iMFoN7HoUvKjSHAQEBAQ Received: from ppp121-44-53-2.lns20.syd4.internode.on.net (HELO dastard) ([121.44.53.2]) by ipmail05.adl6.internode.on.net with ESMTP; 16 Sep 2016 08:37:49 +0930 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1bkfky-0002Dv-64; Fri, 16 Sep 2016 09:07:48 +1000 Date: Fri, 16 Sep 2016 09:07:48 +1000 From: Dave Chinner To: Dan Williams Subject: Re: [PATCH v2 2/3] mm, dax: add VM_DAX flag for DAX VMAs Message-ID: <20160915230748.GS30497@dastard> References: <147392246509.9873.17750323049785100997.stgit@dwillia2-desk3.amr.corp.intel.com> <147392247875.9873.4205533916442000884.stgit@dwillia2-desk3.amr.corp.intel.com> <20160915082615.GA9772@lst.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: linux-nvdimm@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Linux-nvdimm developer list." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "linux-nvdimm@lists.01.org" , "linux-kernel@vger.kernel.org" , Nicholas Piggin , XFS Developers , Linux MM , linux-fsdevel , Christoph Hellwig Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" X-Virus-Scanned: ClamAV using ClamSMTP On Thu, Sep 15, 2016 at 10:01:03AM -0700, Dan Williams wrote: > On Thu, Sep 15, 2016 at 1:26 AM, Christoph Hellwig wrote: > > On Wed, Sep 14, 2016 at 11:54:38PM -0700, Dan Williams wrote: > >> The DAX property, page cache bypass, of a VMA is only detectable via the > >> vma_is_dax() helper to check the S_DAX inode flag. However, this is > >> only available internal to the kernel and is a property that userspace > >> applications would like to interrogate. > > > > They have absolutely no business knowing such an implementation detail. > > Hasn't that train already left the station with FS_XFLAG_DAX? No, that's an admin flag, not a runtime hint for applications. Just because that flag is set on an inode, it does not mean that DAX is actually in use - it will be ignored if the backing dev is not dax capable. > The other problem with hiding the DAX property is that it turns out to > not be a transparent acceleration feature. See xfs/086 xfs/088 > xfs/089 xfs/091 which fail with DAX and, as far as I understand, it is > due to the fact that DAX disallows delayed allocation behavior. Which is not a bug, nor is it something that app developers should be surprised by. i.e. Subtle differences in error reporting behaviour occur in filesystems /all the time/. Run the test on a non-dax filesystem with an extent size hint. It fails /exactly the same way as DAX/. Run it with direct IO - fails the same way as DAX. Run it with synchronous writes - it fails the same way as DAX. IOWs, if an app can't handle the way DAX reports errors, then they are /broken/. Delayed allocation requires checking the return value of fsync() or close() to capture the allocation error - many more apps get that wrong than the ones that expect the immediate errors from write()... Anyway: to domeonstrate that the nothign is actually broken, and you might sometimes need to fix tests and send patches to fstests@vger.kernel.org, this makes xfs/086 pass for me on DAX: Cheers, Dave. --- a/tests/xfs/086 +++ b/tests/xfs/086 @@ -96,7 +96,8 @@ _scratch_mount echo "+ modify files" for x in `seq 1 64`; do - $XFS_IO_PROG -f -c "pwrite -S 0x62 0 ${blksz}" "${TESTFILE}.${x}" >> $seqres.full + $XFS_IO_PROG -f -c "pwrite -S 0x62 0 ${blksz}" "${TESTFILE}.${x}" \ + >> $seqres.full 2>&1 done umount "${SCRATCH_MNT}"