From: kbuild test robot <lkp@intel.com>
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@intel.com, riel@surriel.com, nilal@redhat.com,
kwolf@redhat.com, pbonzini@redhat.com, ross.zwisler@intel.com,
david@redhat.com, xiaoguangrong.eric@gmail.com,
hch@infradead.org, mst@redhat.com, niteshnarayanlal@hotmail.com,
lcapitulino@redhat.com, imammedo@redhat.com, eblake@redhat.com,
pagupta@redhat.com
Subject: Re: [PATCH 2/3] libnvdimm: nd_region flush callback support
Date: Tue, 4 Sep 2018 23:29:18 +0800 [thread overview]
Message-ID: <20180904152917.GE17047@intel.com> (raw)
In-Reply-To: <20180831133019.27579-3-pagupta@redhat.com>
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 @@
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
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: Pankaj Gupta <pagupta@redhat.com>
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@intel.com, riel@surriel.com, nilal@redhat.com,
kwolf@redhat.com, pbonzini@redhat.com, ross.zwisler@intel.com,
david@redhat.com, xiaoguangrong.eric@gmail.com,
hch@infradead.org, mst@redhat.com, niteshnarayanlal@hotmail.com,
lcapitulino@redhat.com, imammedo@redhat.com, eblake@redhat.com,
pagupta@redhat.com
Subject: Re: [PATCH 2/3] libnvdimm: nd_region flush callback support
Date: Tue, 4 Sep 2018 23:29:18 +0800 [thread overview]
Message-ID: <20180904152917.GE17047@intel.com> (raw)
In-Reply-To: <20180831133019.27579-3-pagupta@redhat.com>
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 @@
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
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: Pankaj Gupta <pagupta@redhat.com>
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@intel.com, riel@surriel.com, nilal@redhat.com,
kwolf@redhat.com, pbonzini@redhat.com, ross.zwisler@intel.com,
david@redhat.com, xiaoguangrong.eric@gmail.com,
hch@infradead.org, mst@redhat.com, niteshnarayanlal@hotmail.com,
lcapitulino@redhat.com, imammedo@redhat.com, eblake@redhat.com
Subject: Re: [Qemu-devel] [PATCH 2/3] libnvdimm: nd_region flush callback support
Date: Tue, 4 Sep 2018 23:29:18 +0800 [thread overview]
Message-ID: <20180904152917.GE17047@intel.com> (raw)
In-Reply-To: <20180831133019.27579-3-pagupta@redhat.com>
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 @@
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
next prev parent reply other threads:[~2018-09-04 15:29 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-31 13:30 [PATCH 0/3] kvm "fake DAX" device Pankaj Gupta
2018-08-31 13:30 ` [Qemu-devel] " Pankaj Gupta
2018-08-31 13:30 ` Pankaj Gupta
[not found] ` <20180831133019.27579-1-pagupta-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-08-31 13:30 ` [PATCH 1/3] nd: move nd_region to common header Pankaj Gupta
2018-08-31 13:30 ` [Qemu-devel] " Pankaj Gupta
2018-08-31 13:30 ` Pankaj Gupta
[not found] ` <20180831133019.27579-2-pagupta-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-09-22 0:47 ` Dan Williams
2018-09-22 0:47 ` Dan Williams
[not found] ` <CAPcyv4jFimkVnVuzza5TCG=KvY88KZnXzH4GNEgUBbTouprzJA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2018-09-24 11:40 ` Pankaj Gupta
2018-09-24 11:40 ` Pankaj Gupta
2018-08-31 13:30 ` [PATCH 2/3] libnvdimm: nd_region flush callback support Pankaj Gupta
2018-08-31 13:30 ` [Qemu-devel] " Pankaj Gupta
2018-08-31 13:30 ` Pankaj Gupta
2018-09-04 15:29 ` kbuild test robot [this message]
2018-09-04 15:29 ` [Qemu-devel] " kbuild test robot
2018-09-04 15:29 ` kbuild test robot
[not found] ` <20180904152917.GE17047-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2018-09-05 8:40 ` Pankaj Gupta
2018-09-05 8:40 ` [Qemu-devel] " Pankaj Gupta
2018-09-05 8:40 ` Pankaj Gupta
2018-09-22 0:43 ` Dan Williams
2018-09-24 11:07 ` Pankaj Gupta
2018-08-31 13:30 ` [PATCH 3/3] virtio-pmem: Add virtio pmem driver Pankaj Gupta
2018-08-31 13:30 ` [Qemu-devel] " Pankaj Gupta
2018-08-31 13:30 ` Pankaj Gupta
[not found] ` <20180831133019.27579-4-pagupta-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-09-04 15:17 ` kbuild test robot
2018-09-04 15:17 ` [Qemu-devel] " kbuild test robot
2018-09-04 15:17 ` kbuild test robot
2018-09-05 8:34 ` Pankaj Gupta
2018-09-05 8:34 ` [Qemu-devel] " Pankaj Gupta
2018-09-05 12:02 ` kbuild test robot
2018-09-05 12:02 ` [Qemu-devel] " kbuild test robot
2018-09-05 12:02 ` kbuild test robot
2018-09-12 16:54 ` Luiz Capitulino
2018-09-12 16:54 ` [Qemu-devel] " Luiz Capitulino
2018-09-12 16:54 ` Luiz Capitulino
2018-09-13 6:58 ` [Qemu-devel] " Pankaj Gupta
2018-09-13 6:58 ` Pankaj Gupta
[not found] ` <831225077.12817716.1536821901550.JavaMail.zimbra-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-09-13 12:19 ` Luiz Capitulino
2018-09-13 12:19 ` Luiz Capitulino
2018-09-14 12:13 ` Pankaj Gupta
2018-09-22 1:08 ` Dan Williams
2018-09-22 1:08 ` Dan Williams
2018-09-24 9:41 ` Pankaj Gupta
2018-09-27 13:06 ` Pankaj Gupta
2018-09-27 15:55 ` Dan Williams
2018-08-31 13:30 ` [PATCH] qemu: Add virtio pmem device Pankaj Gupta
2018-08-31 13:30 ` [Qemu-devel] " Pankaj Gupta
2018-08-31 13:30 ` Pankaj Gupta
[not found] ` <20180831133019.27579-5-pagupta-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-09-12 16:57 ` Luiz Capitulino
2018-09-12 16:57 ` [Qemu-devel] " Luiz Capitulino
2018-09-12 16:57 ` Luiz Capitulino
2018-09-13 7:06 ` Pankaj Gupta
2018-09-13 7:06 ` [Qemu-devel] " Pankaj Gupta
2018-09-13 7:06 ` Pankaj Gupta
[not found] ` <563893075.12819183.1536822387535.JavaMail.zimbra-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-09-13 12:22 ` Luiz Capitulino
2018-09-13 12:22 ` [Qemu-devel] " Luiz Capitulino
2018-09-13 12:22 ` Luiz Capitulino
2018-09-20 11:21 ` David Hildenbrand
[not found] ` <2721c3ee-88d1-a8e9-1f1e-ffc3eef1d1ca-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2018-09-20 12:03 ` [Qemu-devel] " Pankaj Gupta
2018-09-20 12:03 ` Pankaj Gupta
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180904152917.GE17047@intel.com \
--to=lkp@intel.com \
--cc=dan.j.williams@intel.com \
--cc=david@redhat.com \
--cc=eblake@redhat.com \
--cc=hch@infradead.org \
--cc=imammedo@redhat.com \
--cc=jack@suse.cz \
--cc=kbuild-all@01.org \
--cc=kvm@vger.kernel.org \
--cc=kwolf@redhat.com \
--cc=lcapitulino@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvdimm@ml01.01.org \
--cc=mst@redhat.com \
--cc=nilal@redhat.com \
--cc=niteshnarayanlal@hotmail.com \
--cc=pagupta@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=riel@surriel.com \
--cc=ross.zwisler@intel.com \
--cc=stefanha@redhat.com \
--cc=xiaoguangrong.eric@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.