From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtprelay.hostedemail.com (smtprelay0056.hostedemail.com [216.40.44.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id C204481C1C for ; Thu, 12 Jan 2017 10:02:26 -0800 (PST) Message-ID: <1484244141.3065.20.camel@perches.com> Subject: Re: [PATCH v5] DAX: enable iostat for read/write From: Joe Perches Date: Thu, 12 Jan 2017 10:02:21 -0800 In-Reply-To: <20170112183848.23159-1-toshi.kani@hpe.com> References: <20170112183848.23159-1-toshi.kani@hpe.com> Mime-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: Toshi Kani , akpm@linux-foundation.org, dan.j.williams@intel.com Cc: linux-nvdimm@lists.01.org, david@fromorbit.com, linux-kernel@vger.kernel.org, viro@zeniv.linux.org.uk, linux-fsdevel@vger.kernel.org List-ID: On Thu, 2017-01-12 at 11:38 -0700, Toshi Kani wrote: > DAX IO path does not support iostat, but its metadata IO path does. > Therefore, iostat shows metadata IO statistics only, which has been > confusing to users. [] > diff --git a/fs/dax.c b/fs/dax.c [] > @@ -1058,12 +1058,24 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, > { > struct address_space *mapping = iocb->ki_filp->f_mapping; > struct inode *inode = mapping->host; > + struct gendisk *disk = inode->i_sb->s_bdev->bd_disk; > loff_t pos = iocb->ki_pos, ret = 0, done = 0; > unsigned flags = 0; > + unsigned long start = 0; > + int do_acct = blk_queue_io_stat(disk->queue); > > if (iov_iter_rw(iter) == WRITE) > flags |= IOMAP_WRITE; > > + if (do_acct) { > + sector_t sec = iov_iter_count(iter) >> 9; > + > + start = jiffies; > + generic_start_io_acct(iov_iter_rw(iter), > + min_t(unsigned long, 1, sec), I believe I mislead you with a thinko. Your original code was (!sec) ? 1 : sec and I suggested incorrectly using min_t It should of course be max_t. Sorry. Also, as sec is now sector_t (u64), perhaps this unsigned long cast is incorrect. _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751453AbdALSDT (ORCPT ); Thu, 12 Jan 2017 13:03:19 -0500 Received: from smtprelay0165.hostedemail.com ([216.40.44.165]:46904 "EHLO smtprelay.hostedemail.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750761AbdALSC1 (ORCPT ); Thu, 12 Jan 2017 13:02:27 -0500 X-Session-Marker: 6A6F6540706572636865732E636F6D X-Spam-Summary: 10,1,0,,d41d8cd98f00b204,joe@perches.com,:::::::::::::::::,RULES_HIT:41:355:379:541:599:988:989:1260:1277:1311:1313:1314:1345:1359:1373:1437:1515:1516:1518:1534:1541:1593:1594:1711:1730:1747:1777:1792:2194:2199:2393:2559:2562:2691:2828:3138:3139:3140:3141:3142:3352:3622:3866:3867:3868:3871:3872:3873:4250:4321:4605:5007:10007:10400:10848:11026:11232:11658:11914:12043:12296:12438:12740:12760:12895:13069:13163:13229:13311:13357:13439:14096:14097:14659:14721:21060:21080:21524:30012:30054:30091,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:none,Custom_rules:0:1:0,LFtime:2,LUA_SUMMARY:none X-HE-Tag: fear19_14cc46a8f5c2d X-Filterd-Recvd-Size: 2087 Message-ID: <1484244141.3065.20.camel@perches.com> Subject: Re: [PATCH v5] DAX: enable iostat for read/write From: Joe Perches To: Toshi Kani , akpm@linux-foundation.org, dan.j.williams@intel.com Cc: david@fromorbit.com, viro@zeniv.linux.org.uk, ross.zwisler@linux.intel.com, linux-nvdimm@ml01.01.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Date: Thu, 12 Jan 2017 10:02:21 -0800 In-Reply-To: <20170112183848.23159-1-toshi.kani@hpe.com> References: <20170112183848.23159-1-toshi.kani@hpe.com> Content-Type: text/plain; charset="ISO-8859-1" X-Mailer: Evolution 3.22.3-0ubuntu0.1 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 2017-01-12 at 11:38 -0700, Toshi Kani wrote: > DAX IO path does not support iostat, but its metadata IO path does. > Therefore, iostat shows metadata IO statistics only, which has been > confusing to users. [] > diff --git a/fs/dax.c b/fs/dax.c [] > @@ -1058,12 +1058,24 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, > { > struct address_space *mapping = iocb->ki_filp->f_mapping; > struct inode *inode = mapping->host; > + struct gendisk *disk = inode->i_sb->s_bdev->bd_disk; > loff_t pos = iocb->ki_pos, ret = 0, done = 0; > unsigned flags = 0; > + unsigned long start = 0; > + int do_acct = blk_queue_io_stat(disk->queue); > > if (iov_iter_rw(iter) == WRITE) > flags |= IOMAP_WRITE; > > + if (do_acct) { > + sector_t sec = iov_iter_count(iter) >> 9; > + > + start = jiffies; > + generic_start_io_acct(iov_iter_rw(iter), > + min_t(unsigned long, 1, sec), I believe I mislead you with a thinko. Your original code was (!sec) ? 1 : sec and I suggested incorrectly using min_t It should of course be max_t. Sorry. Also, as sec is now sector_t (u64), perhaps this unsigned long cast is incorrect. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtprelay0165.hostedemail.com ([216.40.44.165]:46904 "EHLO smtprelay.hostedemail.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750761AbdALSC1 (ORCPT ); Thu, 12 Jan 2017 13:02:27 -0500 Message-ID: <1484244141.3065.20.camel@perches.com> Subject: Re: [PATCH v5] DAX: enable iostat for read/write From: Joe Perches To: Toshi Kani , akpm@linux-foundation.org, dan.j.williams@intel.com Cc: david@fromorbit.com, viro@zeniv.linux.org.uk, ross.zwisler@linux.intel.com, linux-nvdimm@lists.01.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Date: Thu, 12 Jan 2017 10:02:21 -0800 In-Reply-To: <20170112183848.23159-1-toshi.kani@hpe.com> References: <20170112183848.23159-1-toshi.kani@hpe.com> Content-Type: text/plain; charset="ISO-8859-1" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Thu, 2017-01-12 at 11:38 -0700, Toshi Kani wrote: > DAX IO path does not support iostat, but its metadata IO path does. > Therefore, iostat shows metadata IO statistics only, which has been > confusing to users. [] > diff --git a/fs/dax.c b/fs/dax.c [] > @@ -1058,12 +1058,24 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter, > { > struct address_space *mapping = iocb->ki_filp->f_mapping; > struct inode *inode = mapping->host; > + struct gendisk *disk = inode->i_sb->s_bdev->bd_disk; > loff_t pos = iocb->ki_pos, ret = 0, done = 0; > unsigned flags = 0; > + unsigned long start = 0; > + int do_acct = blk_queue_io_stat(disk->queue); > > if (iov_iter_rw(iter) == WRITE) > flags |= IOMAP_WRITE; > > + if (do_acct) { > + sector_t sec = iov_iter_count(iter) >> 9; > + > + start = jiffies; > + generic_start_io_acct(iov_iter_rw(iter), > + min_t(unsigned long, 1, sec), I believe I mislead you with a thinko. Your original code was (!sec) ? 1 : sec and I suggested incorrectly using min_t It should of course be max_t. Sorry. Also, as sec is now sector_t (u64), perhaps this unsigned long cast is incorrect.