Re: [PATCH 2/2] libnvdimm: clear region badblock in nvdimm_clear_poison()

From: Kani, Toshimitsu
Date: Mon May 01 2017 - 11:43:30 EST


On Fri, 2017-04-28 at 17:35 -0700, Dan Williams wrote:
> On Fri, Apr 28, 2017 at 5:12 PM, Dan Williams <dan.j.williams@xxxxxxx
> om> wrote:
> > On Fri, Apr 28, 2017 at 5:10 PM, Dan Williams <dan.j.williams@intel
> > .com> wrote:
> > > On Thu, Apr 27, 2017 at 3:57 PM, Toshi Kani <toshi.kani@xxxxxxx>
> > > wrote:
> > > > Badblocks are tracked at both region and device levels.
> > > > pmem_clear_poison() and nsio_rw_bytes() call
> > > > nvdimm_clear_poison() and then badblocks_clear() to clear
> > > > badblocks at the device level. However, it does not update
> > > > badblocks at the region level, which makes them inconsistent.
> > > >
> > > > Change nvdimm_clear_poison() to update backblocks at the region
> > > > level to keep them consistent.
> > > >
> > > > Signed-off-by: Toshi Kani <toshi.kani@xxxxxxx>
> > > > Cc: Dan Williams <dan.j.williams@xxxxxxxxx>
> > > > Cc: Dave Jiang <dave.jiang@xxxxxxxxx>
> > > > Cc: Vishal Verma <vishal.l.verma@xxxxxxxxx>
> > >
> > > This looks good, and it seems we have a bug in the other location
> > > that does this in __nd_ioctl(). That other one is missing the
> > > "clear_err.cleared / 512" check. Can you respin this and define a
> > > common helper that both locations can call?
> >
> > On second thought, I'll take this and spin my own cleanup / fix on
> > top.
> >
> > Thanks Toshi!
>
> ...and I need to drop it again because it causes this:
>
> [ÂÂ106.974889] BUG: sleeping function called from invalid context at
> kernel/locking/mutex.c:747
> [ÂÂ106.977328] in_atomic(): 1, irqs_disabled(): 0, pid: 5584, name:
> dd

Sorry, I should have tested with CONFIG_DEBUG_ATOMIC_SLEEP set. Thanks
for straighten it out in your patch!Â

-Toshi