From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932079AbbKBOWZ (ORCPT ); Mon, 2 Nov 2015 09:22:25 -0500 Received: from mx1.redhat.com ([209.132.183.28]:39691 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753803AbbKBOWW (ORCPT ); Mon, 2 Nov 2015 09:22:22 -0500 From: Jeff Moyer To: Dave Chinner Cc: Ross Zwisler , linux-kernel@vger.kernel.org, "H. Peter Anvin" , "J. Bruce Fields" , "Theodore Ts'o" , Alexander Viro , Andreas Dilger , Dan Williams , Ingo Molnar , Jan Kara , Jeff Layton , Matthew Wilcox , Thomas Gleixner , linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-nvdimm@ml01.01.org, x86@kernel.org, xfs@oss.sgi.com, Andrew Morton , Matthew Wilcox Subject: Re: [RFC 00/11] DAX fsynx/msync support References: <1446149535-16200-1-git-send-email-ross.zwisler@linux.intel.com> <20151030035533.GU19199@dastard> <20151030183938.GC24643@linux.intel.com> <20151101232948.GF10656@dastard> X-PGP-KeyID: 1F78E1B4 X-PGP-CertKey: F6FE 280D 8293 F72C 65FD 5A58 1FF8 A7CA 1F78 E1B4 X-PCLoadLetter: What the f**k does that mean? Date: Mon, 02 Nov 2015 09:22:15 -0500 In-Reply-To: <20151101232948.GF10656@dastard> (Dave Chinner's message of "Mon, 2 Nov 2015 10:29:48 +1100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Dave Chinner writes: > Further, REQ_FLUSH/REQ_FUA are more than just "put the data on stable > storage" commands. They are also IO barriers that affect scheduling > of IOs in progress and in the request queues. A REQ_FLUSH/REQ_FUA > IO cannot be dispatched before all prior IO has been dispatched and > drained from the request queue, and IO submitted after a queued > REQ_FLUSH/REQ_FUA cannot be scheduled ahead of the queued > REQ_FLUSH/REQ_FUA operation. > > IOWs, REQ_FUA/REQ_FLUSH not only guarantee data is on stable > storage, they also guarantee the order of IO dispatch and > completion when concurrent IO is in progress. This hasn't been the case for several years, now. It used to work that way, and that was deemed a big performance problem. Since file systems already issued and waited for all I/O before sending down a barrier, we decided to get rid of the I/O ordering pieces of barriers (and stop calling them barriers). See commit 28e7d184521 (block: drop barrier ordering by queue draining). Cheers, Jeff