Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752557AbdFNQtx (ORCPT ); Wed, 14 Jun 2017 12:49:53 -0400 Received: from mail-ot0-f172.google.com ([74.125.82.172]:36637 "EHLO mail-ot0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752520AbdFNQtv (ORCPT ); Wed, 14 Jun 2017 12:49:51 -0400 MIME-Version: 1.0 In-Reply-To: <20170614104626.GA21506@quack2.suse.cz> References: <149703982465.20620.14881139332926778446.stgit@dwillia2-desk3.amr.corp.intel.com> <149703989611.20620.6907872165215640212.stgit@dwillia2-desk3.amr.corp.intel.com> <20170614104626.GA21506@quack2.suse.cz> From: Dan Williams Date: Wed, 14 Jun 2017 09:49:50 -0700 Message-ID: Subject: Re: [PATCH v3 13/14] filesystem-dax: gate calls to dax_flush() on QUEUE_FLAG_WC To: Jan Kara Cc: "linux-nvdimm@lists.01.org" , dm-devel@redhat.com, Matthew Wilcox , X86 ML , "linux-kernel@vger.kernel.org" , Jeff Moyer , Al Viro , linux-fsdevel , Ross Zwisler , Christoph Hellwig Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1181 Lines: 28 On Wed, Jun 14, 2017 at 3:46 AM, Jan Kara wrote: > On Fri 09-06-17 13:24:56, Dan Williams wrote: >> Some platforms arrange for cpu caches to be flushed on power-fail. On >> those platforms there is no requirement that the kernel track and flush >> potentially dirty cache lines. Given that we still insert entries into >> the radix for locking purposes this patch only disables the cache flush >> loop, not the dirty tracking. >> >> Userspace can override the default cache setting via the block device >> queue "write_cache" attribute in sysfs. >> >> Cc: Jan Kara >> Cc: Jeff Moyer >> Cc: Christoph Hellwig >> Cc: Matthew Wilcox >> Cc: Ross Zwisler >> Signed-off-by: Dan Williams > > ... > >> - dax_flush(dax_dev, pgoff, kaddr, size); >> + if (test_bit(QUEUE_FLAG_WC, &bdev->bd_queue->queue_flags)) >> + dax_flush(dax_dev, pgoff, kaddr, size); > > IMHO the check belongs into dax_flush() similarly as blkdev_issue_flush() > takes silently handles whether the flush is actually needed or not. Looks good, will do.