Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp3539764imm; Wed, 5 Sep 2018 01:41:43 -0700 (PDT) X-Google-Smtp-Source: ANB0VdaTKq7wKk32jG0creS/J3dXn9yIDcuFnLmxmL173gmTdNOx86UtzYN/vpKJoOLEP0Lh4pnp X-Received: by 2002:a62:1a8f:: with SMTP id a137-v6mr39181430pfa.190.1536136903909; Wed, 05 Sep 2018 01:41:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536136903; cv=none; d=google.com; s=arc-20160816; b=UhR6AocJjjlL2FUMLpO9hEeF2g3v9acxn6KxS51rjtCIu470nhts1AizEKDY8GcvP4 fAE2Tdw5toZAas+GZwLTpfThqVdvgKPDB6ZZ1aCEg+45cwAKeSbMCUs7TiQ/SzLDvCFf nQptPZtSOMbKTMeP2eDN8eirLpIAIMw+weGHCZK49iOgxZZordRgIQiKaBueshAud6Dl YICHuUUEnVJuaWal0JzzU5uAhwcquh8YYQ/ETXpohfN3qLwbU2c7X3Vpc8hs5589GMHG qKzzv8c9wTq5CoO1wM72bXH3pv/cWkboKwGGxxHIeNy6+5Vw1yNBZgAD/ExkZupt9UL9 8lNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:thread-index:thread-topic :content-transfer-encoding:mime-version:subject:references :in-reply-to:message-id:cc:to:from:date; bh=fLG4jU/JaFjogDaEj7muh9ysJwrAg17E67hKfZIeI2g=; b=TNGJulTo17DJh31fS9296ZWom2ruIgVury1kWQg6VIOMGX2UQvccavToZTEbCnnkQm uyUeQgzljCTfpP3co9GGC9prZmYoqgA7Cus+EOuFzOit93tVcJ1aIpepzD07eVtel08V u5MvHwKlQw0pnzgb2uUNeSeFgkFWdVvpawu73UCWDHJK2otlwKoqdf1EmM3R8e+g2mhS JtzzHHx0rCNx+dLjp1697mrpYpW6eDpRXYkDA9ZSrObJLNGfFr44UWp20ntjGooNp2lm inI3ngkHNac0O/imL3qNO9KZeKG0aKun/tskUVbcstpPHU4USKQ5qngs3/IAd0EKazM3 duYA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d1-v6si1393228pla.103.2018.09.05.01.41.28; Wed, 05 Sep 2018 01:41:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727991AbeIENJY (ORCPT + 99 others); Wed, 5 Sep 2018 09:09:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:59246 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727711AbeIENJY (ORCPT ); Wed, 5 Sep 2018 09:09:24 -0400 Received: from smtp.corp.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A86609FDCF; Wed, 5 Sep 2018 08:40:14 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8BF693091374; Wed, 5 Sep 2018 08:40:14 +0000 (UTC) Received: from zmail21.collab.prod.int.phx2.redhat.com (zmail21.collab.prod.int.phx2.redhat.com [10.5.83.24]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 239D318005CD; Wed, 5 Sep 2018 08:40:14 +0000 (UTC) Date: Wed, 5 Sep 2018 04:40:13 -0400 (EDT) From: Pankaj Gupta To: kbuild test robot Cc: kbuild-all@01.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, qemu-devel@nongnu.org, linux-nvdimm@ml01.01.org, jack@suse.cz, stefanha@redhat.com, dan j williams , riel@surriel.com, nilal@redhat.com, kwolf@redhat.com, pbonzini@redhat.com, ross zwisler , david@redhat.com, xiaoguangrong eric , hch@infradead.org, mst@redhat.com, niteshnarayanlal@hotmail.com, lcapitulino@redhat.com, imammedo@redhat.com, eblake@redhat.com Message-ID: <1687915522.10201150.1536136813773.JavaMail.zimbra@redhat.com> In-Reply-To: <20180904152917.GE17047@intel.com> References: <20180904152917.GE17047@intel.com> Subject: Re: [PATCH 2/3] libnvdimm: nd_region flush callback support MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.65.193.198, 10.4.195.29] Thread-Topic: libnvdimm: nd_region flush callback support Thread-Index: eJAPPbxbJA1uTokkB4us1rOF4q8Xmw== X-Scanned-By: MIMEDefang 2.84 on 10.5.11.26 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Wed, 05 Sep 2018 08:40:15 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, Thanks for the report. > > Hi Pankaj, > > Thank you for the patch! Perhaps something to improve: > > [auto build test WARNING on linux-nvdimm/libnvdimm-for-next] > [also build test WARNING on v4.19-rc2 next-20180831] > [if your patch is applied to the wrong git tree, please drop us a note to > help improve the system] > > url: > https://github.com/0day-ci/linux/commits/Pankaj-Gupta/kvm-fake-DAX-device/20180903-160032 > base: https://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git > libnvdimm-for-next > reproduce: > # apt-get install sparse > make ARCH=x86_64 allmodconfig > make C=1 CF=-D__CHECK_ENDIAN__ > :::::: branch date: 7 hours ago > :::::: commit date: 7 hours ago > > drivers/nvdimm/pmem.c:116:25: sparse: expression using sizeof(void) > drivers/nvdimm/pmem.c:135:25: sparse: expression using sizeof(void) > >> drivers/nvdimm/pmem.c:204:32: sparse: incorrect type in assignment > >> (different base types) @@ expected restricted blk_status_t [usertype] > >> bi_status @@ got e] bi_status @@ I will fix this in V2. Will wait for any review comments and address in v2. Thanks, Pankaj > drivers/nvdimm/pmem.c:204:32: expected restricted blk_status_t > [usertype] bi_status > drivers/nvdimm/pmem.c:204:32: got int > drivers/nvdimm/pmem.c:208:9: sparse: expression using sizeof(void) > drivers/nvdimm/pmem.c:208:9: sparse: expression using sizeof(void) > include/linux/bvec.h:82:37: sparse: expression using sizeof(void) > include/linux/bvec.h:82:37: sparse: expression using sizeof(void) > include/linux/bvec.h:83:32: sparse: expression using sizeof(void) > include/linux/bvec.h:83:32: sparse: expression using sizeof(void) > drivers/nvdimm/pmem.c:220:32: sparse: incorrect type in assignment > (different base types) @@ expected restricted blk_status_t [usertype] > bi_status @@ got e] bi_status @@ > drivers/nvdimm/pmem.c:220:32: expected restricted blk_status_t > [usertype] bi_status > drivers/nvdimm/pmem.c:220:32: got int > > # > https://github.com/0day-ci/linux/commit/69b95edd2a1f4676361988fa36866b59427e2cfa > git remote add linux-review https://github.com/0day-ci/linux > git remote update linux-review > git checkout 69b95edd2a1f4676361988fa36866b59427e2cfa > vim +204 drivers/nvdimm/pmem.c > > 59e647398 drivers/nvdimm/pmem.c Dan Williams 2016-03-08 107 > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 108 static > void write_pmem(void *pmem_addr, struct page *page, > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 109 unsigned > int off, unsigned int len) > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 110 { > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 111 unsigned > int chunk; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 112 void > *mem; > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 113 > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 114 while > (len) { > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 115 mem = > kmap_atomic(page); > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 @116 chunk = > min_t(unsigned int, len, PAGE_SIZE); > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 117 > memcpy_flushcache(pmem_addr, mem + off, chunk); > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 118 > kunmap_atomic(mem); > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 119 len -= > chunk; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 120 off = 0; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 121 page++; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 122 > pmem_addr += PAGE_SIZE; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 123 } > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 124 } > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 125 > 4e4cbee93 drivers/nvdimm/pmem.c Christoph Hellwig 2017-06-03 126 static > blk_status_t read_pmem(struct page *page, unsigned int off, > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 127 void > *pmem_addr, unsigned int len) > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 128 { > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 129 unsigned > int chunk; > 60622d682 drivers/nvdimm/pmem.c Dan Williams 2018-05-03 130 unsigned > long rem; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 131 void > *mem; > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 132 > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 133 while > (len) { > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 134 mem = > kmap_atomic(page); > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 135 chunk = > min_t(unsigned int, len, PAGE_SIZE); > 60622d682 drivers/nvdimm/pmem.c Dan Williams 2018-05-03 136 rem = > memcpy_mcsafe(mem + off, pmem_addr, chunk); > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 137 > kunmap_atomic(mem); > 60622d682 drivers/nvdimm/pmem.c Dan Williams 2018-05-03 138 if (rem) > 4e4cbee93 drivers/nvdimm/pmem.c Christoph Hellwig 2017-06-03 139 return > BLK_STS_IOERR; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 140 len -= > chunk; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 141 off = 0; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 142 page++; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 143 > pmem_addr += PAGE_SIZE; > 98cc093cb drivers/nvdimm/pmem.c Huang Ying 2017-09-06 144 } > 4e4cbee93 drivers/nvdimm/pmem.c Christoph Hellwig 2017-06-03 145 return > BLK_STS_OK; > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 146 } > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 147 > 4e4cbee93 drivers/nvdimm/pmem.c Christoph Hellwig 2017-06-03 148 static > blk_status_t pmem_do_bvec(struct pmem_device *pmem, struct page *page, > 3f289dcb4 drivers/nvdimm/pmem.c Tejun Heo 2018-07-18 149 > unsigned int len, unsigned int off, unsigned int op, > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 150 > sector_t sector) > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 151 { > 4e4cbee93 drivers/nvdimm/pmem.c Christoph Hellwig 2017-06-03 152 > blk_status_t rc = BLK_STS_OK; > 59e647398 drivers/nvdimm/pmem.c Dan Williams 2016-03-08 153 bool > bad_pmem = false; > 32ab0a3f5 drivers/nvdimm/pmem.c Dan Williams 2015-08-01 154 > phys_addr_t pmem_off = sector * 512 + pmem->data_offset; > 7a9eb2066 drivers/nvdimm/pmem.c Dan Williams 2016-06-03 155 void > *pmem_addr = pmem->virt_addr + pmem_off; > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 156 > e10624f8c drivers/nvdimm/pmem.c Dan Williams 2016-01-06 157 if > (unlikely(is_bad_pmem(&pmem->bb, sector, len))) > 59e647398 drivers/nvdimm/pmem.c Dan Williams 2016-03-08 158 bad_pmem > = true; > 59e647398 drivers/nvdimm/pmem.c Dan Williams 2016-03-08 159 > 3f289dcb4 drivers/nvdimm/pmem.c Tejun Heo 2018-07-18 160 if > (!op_is_write(op)) { > 59e647398 drivers/nvdimm/pmem.c Dan Williams 2016-03-08 161 if > (unlikely(bad_pmem)) > 4e4cbee93 drivers/nvdimm/pmem.c Christoph Hellwig 2017-06-03 162 rc = > BLK_STS_IOERR; > b5ebc8ec6 drivers/nvdimm/pmem.c Dan Williams 2016-03-06 163 else { > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 164 rc = > read_pmem(page, off, pmem_addr, len); > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 165 > flush_dcache_page(page); > b5ebc8ec6 drivers/nvdimm/pmem.c Dan Williams 2016-03-06 166 } > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 167 } else { > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 168 /* > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 169 * Note > that we write the data both before and after > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 170 * > clearing poison. The write before clear poison > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 171 * > handles situations where the latest written data is > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 172 * > preserved and the clear poison operation simply marks > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 173 * the > address range as valid without changing the data. > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 174 * In > this case application software can assume that an > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 175 * > interrupted write will either return the new good > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 176 * data > or an error. > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 177 * > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 178 * > However, if pmem_clear_poison() leaves the data in an > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 179 * > indeterminate state we need to perform the write > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 180 * after > clear poison. > 0a370d261 drivers/nvdimm/pmem.c Dan Williams 2016-04-14 181 */ > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 182 > flush_dcache_page(page); > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 183 > write_pmem(pmem_addr, page, off, len); > 59e647398 drivers/nvdimm/pmem.c Dan Williams 2016-03-08 184 if > (unlikely(bad_pmem)) { > 3115bb02b drivers/nvdimm/pmem.c Toshi Kani 2016-10-13 185 rc = > pmem_clear_poison(pmem, pmem_off, len); > bd697a80c drivers/nvdimm/pmem.c Vishal Verma 2016-09-30 186 > write_pmem(pmem_addr, page, off, len); > 59e647398 drivers/nvdimm/pmem.c Dan Williams 2016-03-08 187 } > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 188 } > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 189 > b5ebc8ec6 drivers/nvdimm/pmem.c Dan Williams 2016-03-06 190 return > rc; > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 191 } > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 192 > dece16353 drivers/nvdimm/pmem.c Jens Axboe 2015-11-05 193 static > blk_qc_t pmem_make_request(struct request_queue *q, struct bio *bio) > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 194 { > 4e4cbee93 drivers/nvdimm/pmem.c Christoph Hellwig 2017-06-03 195 > blk_status_t rc = 0; > f0dc089ce drivers/nvdimm/pmem.c Dan Williams 2015-05-16 196 bool > do_acct; > f0dc089ce drivers/nvdimm/pmem.c Dan Williams 2015-05-16 197 unsigned > long start; > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 198 struct > bio_vec bvec; > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 199 struct > bvec_iter iter; > bd842b8ca drivers/nvdimm/pmem.c Dan Williams 2016-03-18 200 struct > pmem_device *pmem = q->queuedata; > 7e267a8c7 drivers/nvdimm/pmem.c Dan Williams 2016-06-01 201 struct > nd_region *nd_region = to_region(pmem); > 7e267a8c7 drivers/nvdimm/pmem.c Dan Williams 2016-06-01 202 > d2d6364dc drivers/nvdimm/pmem.c Ross Zwisler 2018-06-06 203 if > (bio->bi_opf & REQ_PREFLUSH) > 69b95edd2 drivers/nvdimm/pmem.c Pankaj Gupta 2018-08-31 @204 > bio->bi_status = nd_region->flush(nd_region); > 69b95edd2 drivers/nvdimm/pmem.c Pankaj Gupta 2018-08-31 205 > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 206 > f0dc089ce drivers/nvdimm/pmem.c Dan Williams 2015-05-16 207 do_acct = > nd_iostat_start(bio, &start); > e10624f8c drivers/nvdimm/pmem.c Dan Williams 2016-01-06 208 > bio_for_each_segment(bvec, bio, iter) { > e10624f8c drivers/nvdimm/pmem.c Dan Williams 2016-01-06 209 rc = > pmem_do_bvec(pmem, bvec.bv_page, bvec.bv_len, > 3f289dcb4 drivers/nvdimm/pmem.c Tejun Heo 2018-07-18 210 > bvec.bv_offset, bio_op(bio), iter.bi_sector); > e10624f8c drivers/nvdimm/pmem.c Dan Williams 2016-01-06 211 if (rc) > { > 4e4cbee93 drivers/nvdimm/pmem.c Christoph Hellwig 2017-06-03 212 > bio->bi_status = rc; > e10624f8c drivers/nvdimm/pmem.c Dan Williams 2016-01-06 213 break; > e10624f8c drivers/nvdimm/pmem.c Dan Williams 2016-01-06 214 } > e10624f8c drivers/nvdimm/pmem.c Dan Williams 2016-01-06 215 } > f0dc089ce drivers/nvdimm/pmem.c Dan Williams 2015-05-16 216 if > (do_acct) > f0dc089ce drivers/nvdimm/pmem.c Dan Williams 2015-05-16 217 > nd_iostat_end(bio, start); > 61031952f drivers/nvdimm/pmem.c Ross Zwisler 2015-06-25 218 > 1eff9d322 drivers/nvdimm/pmem.c Jens Axboe 2016-08-05 219 if > (bio->bi_opf & REQ_FUA) > 69b95edd2 drivers/nvdimm/pmem.c Pankaj Gupta 2018-08-31 220 > bio->bi_status = nd_region->flush(nd_region); > 61031952f drivers/nvdimm/pmem.c Ross Zwisler 2015-06-25 221 > 4246a0b63 drivers/nvdimm/pmem.c Christoph Hellwig 2015-07-20 222 > bio_endio(bio); > dece16353 drivers/nvdimm/pmem.c Jens Axboe 2015-11-05 223 return > BLK_QC_T_NONE; > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 224 } > 9e853f231 drivers/block/pmem.c Ross Zwisler 2015-04-01 225 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation >