Message ID | 20170629225911.7896-1-vishal.l.verma@intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | c13c43d54f2c |
Headers | show |
On Thu, Jun 29, 2017 at 3:59 PM, Vishal Verma <vishal.l.verma@intel.com> wrote: > btt_rw_page was not propagating errors frm btt_do_bvec, resulting in any > IO errors via the rw_page path going unnoticed. the pmem driver recently > fixed this in e10624f pmem: fail io-requests to known bad blocks > but same problem in BTT went neglected. > > Fixes: 5212e11 nd_btt: atomic sector updates > Cc: <stable@vger.kernel.org> > Cc: Toshi Kani <toshi.kani@hpe.com> > Cc: Dan Williams <dan.j.williams@intel.com> > Cc: Jeff Moyer <jmoyer@redhat.com> > Signed-off-by: Vishal Verma <vishal.l.verma@intel.com> > --- > drivers/nvdimm/btt.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c > index 7ca11df..4e56e72 100644 > --- a/drivers/nvdimm/btt.c > +++ b/drivers/nvdimm/btt.c > @@ -1248,10 +1248,13 @@ static int btt_rw_page(struct block_device *bdev, sector_t sector, > struct page *page, bool is_write) > { > struct btt *btt = bdev->bd_disk->private_data; > + int rc; > > - btt_do_bvec(btt, NULL, page, PAGE_SIZE, 0, is_write, sector); > - page_endio(page, is_write, 0); > - return 0; > + rc = btt_do_bvec(btt, NULL, page, PAGE_SIZE, 0, is_write, sector); > + if (rc == 0) > + page_endio(page, is_write, 0); > + > + return rc; > } Looks obviously correct, applied.
diff --git a/drivers/nvdimm/btt.c b/drivers/nvdimm/btt.c index 7ca11df..4e56e72 100644 --- a/drivers/nvdimm/btt.c +++ b/drivers/nvdimm/btt.c @@ -1248,10 +1248,13 @@ static int btt_rw_page(struct block_device *bdev, sector_t sector, struct page *page, bool is_write) { struct btt *btt = bdev->bd_disk->private_data; + int rc; - btt_do_bvec(btt, NULL, page, PAGE_SIZE, 0, is_write, sector); - page_endio(page, is_write, 0); - return 0; + rc = btt_do_bvec(btt, NULL, page, PAGE_SIZE, 0, is_write, sector); + if (rc == 0) + page_endio(page, is_write, 0); + + return rc; }
btt_rw_page was not propagating errors frm btt_do_bvec, resulting in any IO errors via the rw_page path going unnoticed. the pmem driver recently fixed this in e10624f pmem: fail io-requests to known bad blocks but same problem in BTT went neglected. Fixes: 5212e11 nd_btt: atomic sector updates Cc: <stable@vger.kernel.org> Cc: Toshi Kani <toshi.kani@hpe.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Jeff Moyer <jmoyer@redhat.com> Signed-off-by: Vishal Verma <vishal.l.verma@intel.com> --- drivers/nvdimm/btt.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)