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: 9334885 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 50C50601C2 for ; Thu, 15 Sep 2016 23:08:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3414229BB9 for ; Thu, 15 Sep 2016 23:08:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2828C29C72; Thu, 15 Sep 2016 23:08:13 +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=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C69C829BB9 for ; Thu, 15 Sep 2016 23:08:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754711AbcIOXH7 (ORCPT ); Thu, 15 Sep 2016 19:07:59 -0400 Received: from ipmail05.adl6.internode.on.net ([150.101.137.143]:32053 "EHLO ipmail05.adl6.internode.on.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752194AbcIOXH6 (ORCPT ); Thu, 15 Sep 2016 19:07:58 -0400 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 Cc: Christoph Hellwig , Linux MM , "linux-nvdimm@lists.01.org" , "linux-kernel@vger.kernel.org" , Nicholas Piggin , XFS Developers , linux-fsdevel 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) Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org 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}"