From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752456AbcEKSkF (ORCPT ); Wed, 11 May 2016 14:40:05 -0400 Received: from mga14.intel.com ([192.55.52.115]:51934 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751824AbcEKSkC (ORCPT ); Wed, 11 May 2016 14:40:02 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,608,1455004800"; d="scan'208";a="973712694" From: "Verma, Vishal L" To: "linux-nvdimm@lists.01.org" CC: "linux-kernel@vger.kernel.org" , "linux-block@vger.kernel.org" , "hch@infradead.org" , "xfs@oss.sgi.com" , "jmoyer@redhat.com" , "linux-mm@kvack.org" , "Williams, Dan J" , "axboe@fb.com" , "akpm@linux-foundation.org" , "linux-fsdevel@vger.kernel.org" , "ross.zwisler@linux.intel.com" , "linux-ext4@vger.kernel.org" , "boaz@plexistor.com" , "david@fromorbit.com" , "jack@suse.cz" Subject: Re: [PATCH v6 4/5] dax: for truncate/hole-punch, do zeroing through the driver if possible Thread-Topic: [PATCH v6 4/5] dax: for truncate/hole-punch, do zeroing through the driver if possible Thread-Index: AQHRquy+6jGeewZS+0Kt5vObFk9OpJ+0iHoA Date: Wed, 11 May 2016 18:39:59 +0000 Message-ID: <1462991986.29294.29.camel@intel.com> References: <1462906156-22303-1-git-send-email-vishal.l.verma@intel.com> <1462906156-22303-5-git-send-email-vishal.l.verma@intel.com> In-Reply-To: <1462906156-22303-5-git-send-email-vishal.l.verma@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.232.112.171] Content-Type: text/plain; charset="utf-8" Content-ID: <5E1FB0B45FA4AB4A819E9443201F1C82@intel.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u4BIe9T2025448 On Tue, 2016-05-10 at 12:49 -0600, Vishal Verma wrote: >  ... > @@ -1240,11 +1254,16 @@ int dax_zero_page_range(struct inode *inode, > loff_t from, unsigned length, >   .size = PAGE_SIZE, >   }; >   > - if (dax_map_atomic(bdev, &dax) < 0) > - return PTR_ERR(dax.addr); > - clear_pmem(dax.addr + offset, length); > - wmb_pmem(); > - dax_unmap_atomic(bdev, &dax); > + if (dax_range_is_aligned(bdev, &dax, offset, length)) > + return blkdev_issue_zeroout(bdev, dax.sector, > + length >> 9, GFP_NOFS, true); Found another bug here while testing. The zeroout needs to be done for sector + (offset >> 9). The above just zeroed out the first sector of the page irrespective of offset, which is wrong.