On Tue, May 2, 2017 at 2:21 PM, Kani, Toshimitsu <[email protected]> wrote: > On Tue, 2017-05-02 at 13:54 -0700, Dan Williams wrote: >> On Tue, May 2, 2017 at 1:26 PM, Dave Jiang <[email protected]> >> wrote: > : >> > +read sector len < >> > /sys/bus/platform/devices/nfit_test.0/$dev/$region/badblocks >> > +echo "sector: $sector len: $len" >> > + >> > +# clearing using ndctl >> > +$NDCTL clear-error -f /dev/$chardev -s $sector -l $len >> >> Ok, so I'm glad you wrote this test it highlights one mismatched >> assumption. The "ndctl clear-error" options should be device- >> relative "sector" offsets not region offsets. So, "ndctl clear-error >> /dev/dev0.0 -s 0" should clear device-dax instance offset 0, not >> region offset 0 A device-dax instance starts at an offset from the >> namespace, and the namespace may start anywhere within a region. So >> the clear-error command needs to translate that device-dax sector >> offset to the region offset. device-dax offset to namespace offset >> can be calculated by subtracting the device-dax instance size from >> the namespace size, the namespace offset can be calculated by >> subtracting the region resource base from the namespace resource >> base. Now, the difficulty will be that the resource values for >> nfit_test are garbage because they are vmalloc'd based, I need to >> give that some thought... > > Using device-relative sector makes sense, but how does user come up > with this sector number when sysfs only provides regionN/badblocks?
Right, we need a "list" helper that is also device-relative. _______________________________________________ Linux-nvdimm mailing list [email protected] https://lists.01.org/mailman/listinfo/linux-nvdimm
