[dm-devel] dm-mirror: do not degrade the mirror on discard error

Mike Snitzer snitzer at redhat.com
Wed Feb 18 17:10:17 UTC 2015


On Wed, Feb 18 2015 at 11:29am -0500,
Mikulas Patocka <mpatocka at redhat.com> wrote:

> 
> 
> On Wed, 18 Feb 2015, James Bottomley wrote:
> 
> > On Tue, 2015-02-17 at 14:59 -0500, Mikulas Patocka wrote:
> > > 
> > > On Mon, 16 Feb 2015, James Bottomley wrote:
> > > 
> > > > I already said this in the first sentence of the last paragraph of my
> > > > email.  The point isn't what it does today it's what might happen
> > > > tomorrow and the principle of least surprise.  One day, someone might
> > > > propagate the error.  When that happens, they'll be surprised to find
> > > > every discard failure reported as -ENOTSUPP and it will cost someone
> > > > time and effort to investigate and fix.  If you just propagate the error
> > > > today, you save all that work in the future.
> > > > 
> > > > James
> > > 
> > > The question is if this case is so important that it justifies dm-io 
> > > change.
> > 
> > I'm not sure I follow.  Are you saying no-one would ever want to
> > propagate the error?  I think that would be short sighted.
> 
> The SATA device may report success on the trim command and may not trim 
> any data. I know this is stupid, but the standard allows the device to do 
> that and the devices are doing that. See this thread 
> http://www.spinics.net/lists/linux-scsi/msg80297.html
> 
> Consequently, if some filesystem or other application contains the logic 
> "if trim succeeded, do something", it is broken, because the SSD may 
> ignore the command and report success.
> 
> > > The SSD may ignore discards and report them as sucesfully completed, so no 
> > > one should depend on the return code anyway. The error code may be used as 
> > > a hint that it is futile to send more discards in the future, but relying 
> > > on the return code is already not correct.
> > 
> > That's not a good way of interpreting the standards.
> 
> It doesn't matter how do you interpret the standard. It does matter how do 
> SSD vendors interpret it. And they interpret it in such a way that it is 
> OK to report success and not trim any data. I know it doesn't make much 
> sense to standardize the flag "Return Zero After Trim" and then specify 
> that the device (despite having RZAT set) may ignore the trim command and 
> not return zeroes on the trimmed data. But it's the way it is.

Let's please set this thread to one side.  I already offered my thoughts
in this thread, see: 
https://www.redhat.com/archives/dm-devel/2015-February/msg00076.html

I'm not interested in wiring up the actual error return for dm-mirror's
benefit.  If/when other dm-io consumers have a need to differentiate
between error codes we'll fix dm-io as needed.




More information about the dm-devel mailing list