On Mon, May 01, 2017 at 03:28:18PM -0700, Kani, Toshimitsu wrote:
On Mon, 2017-05-01 at 15:16 -0700, Dave Jiang wrote:
>
> On 05/01/2017 03:06 PM, Kani, Toshimitsu wrote:
> > On Mon, 2017-05-01 at 14:23 -0700, Dave Jiang wrote:
> > :
> > > +++ b/Documentation/ndctl-clear-error.txt
> > > @@ -0,0 +1,37 @@
> > > +ndctl-clear-error(1)
> > > +====================
> > > +
> > > +NAME
> > > +----
> > > +ndctl-clear-error - clear badblocks for a device
> > > +
> > > +SYNOPSIS
> > > +--------
> > > +[verse]
> > > +'ndctl clear-error' [<options>]
> > > +
> > > +EXAMPLES
> > > +--------
> > > +
> > > +Clear poison (bad blocks) for the provided device
> > > +[verse]
> > > +ndctl clear-error -f /dev/dax0.0 -s 0 -l 8
> > > +
> > > +Clear poison (bad blocks) at block offset 0 for 8 blocks on
> > > device
> > > /dev/dax0.0
> > > +
> > > +OPTIONS
> > > +-------
> > > +-f::
> > > +--file::
> > > +The device/file to be cleared of poison (bad blocks).
> > > +
> > > +-s::
> > > +--start::
> > > +The offset where the poison (bad block) starts for this
> > > device.
> > > +Typically this is acquired from the sysfs badblocks file.
> > > +
> > > +-l::
> > > +--len::
> > > +The number of badblocks to clear in size of 512 bytes
> > > increments.
> > > +
> >
> > When a specified range is larger than a badblock range, the command
> > completes with no-op without any message. I think it should either
> > fail with an error message or clear an inclusive badblock.
>
> It's suppose to just fail. Looks like I just forgot to insert an
> error print out.
Yes, I am fine with the behavior with a proper error message. It'd be
good to clarify it in the document as well.
Thanks,
-Toshi
--
Does something like this work for you?
diff --git a/ndctl/clear-error.c b/ndctl/clear-error.c
index 33d930a..1a9b94a 100644
--- a/ndctl/clear-error.c
+++ b/ndctl/clear-error.c
@@ -167,6 +167,7 @@ static int clear_error(struct clear_err *ce)
if (check_user_input_range(ce->region, clear_err.bb_start,
clear_err.bb_len) == 0) {
rc = -EINVAL;
+ error("badblocks region input out of range.\n");
goto cleanup;
}
Dave Jiang
Software Engineer, Data Center Group
Intel Corp.
dave.jiang(a)intel.com