[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [dm-devel] Ext4 and xfs problems in dm-thin on allocation and discard



On Tue, 19 Jun 2012, Mike Snitzer wrote:

> Date: Tue, 19 Jun 2012 09:16:49 -0400
> From: Mike Snitzer <snitzer redhat com>
> To: Lukáš Czerner <lczerner redhat com>
> Cc: Dave Chinner <david fromorbit com>, Spelic <spelic shiftmail org>,
>     device-mapper development <dm-devel redhat com>,
>     linux-ext4 vger kernel org, xfs oss sgi com
> Subject: Re: Ext4 and xfs problems in dm-thin on allocation and discard
> 
> On Tue, Jun 19 2012 at  2:32am -0400,
> Lukáš Czerner <lczerner redhat com> wrote:
> 
> > On Mon, 18 Jun 2012, Mike Snitzer wrote:
> > 
> > > Date: Mon, 18 Jun 2012 23:12:42 -0400
> > > From: Mike Snitzer <snitzer redhat com>
> > > To: Dave Chinner <david fromorbit com>
> > > Cc: Spelic <spelic shiftmail org>,
> > >     device-mapper development <dm-devel redhat com>,
> > >     linux-ext4 vger kernel org, xfs oss sgi com
> > > Subject: Re: Ext4 and xfs problems in dm-thin on allocation and discard
> > > 
> > > On Mon, Jun 18 2012 at  9:57pm -0400,
> > > Dave Chinner <david fromorbit com> wrote:
> > > 
> > > > On Mon, Jun 18, 2012 at 11:33:50PM +0200, Spelic wrote:
> > > >
> > > > > Please note that since I am above MD raid5 (I believe this is the
> > > > > reason), the passdown of discards does not work, as my dmesg says:
> > > > > [160508.497879] device-mapper: thin: Discard unsupported by data
> > > > > device (dm-1): Disabling discard passdown.
> > > > > but AFAIU, unless there is a thinp bug, this should not affect the
> > > > > unmapping of thin blocks by fstrimming xfs... and in fact ext4 is
> > > > > able to do that.
> > > > 
> > > > Does ext4 report that same error?
> > > 
> > > That message says the underlying device doesn't support discards
> > > (because it is an MD device).  But the thinp device still has discards
> > > enabled -- it just won't pass the discards down to the underlying data
> > > device.
> > > 
> > > So yes, it'll happen with ext4 -- it is generated when the thin-pool
> > > device is loaded (which happens independent of the filesystem that is
> > > layered ontop).
> > > 
> > > The discards still inform the thin-pool that the corresponding extents
> > > are no longer allocated.
> > 
> > So do I understand correctly that even though the discard came
> > through and thinp took advantage of it it still returns EOPNOTSUPP ?
> 
> No, not correct.  Why are you assuming this?  I must be missing
> something from this discussion that led you there.

Those two paragraphs led me to that conclusion:

  That message says the underlying device doesn't support discards
  (because it is an MD device).  But the thinp device still has discards
  enabled -- it just won't pass the discards down to the underlying data
  device.

  The discards still inform the thin-pool that the corresponding extents
  are no longer allocated.

so I am a bit confused now. Why the dm-thin returned EOPNOTSUPP then
? Is that because it has been configured to ignore_discard, or it
actually takes advantage of the discard but underlying device does
not support it (and no_discard_passdown is not set) so it return
EOPNOTSUPP ?

> 
> > This seems rather suboptimal. IIRC there was a discussion to add an
> > option to enable/disable sending discard in thinp target down
> > to the device.
> > 
> > So maybe it might be a bit smarter than that and actually
> > enable/disable discard pass through depending on the underlying
> > support, so we do not blindly send discard down to the device even
> > though it does not support it.
> 
> Yes, that is what we did.
> 
> Discards are enabled my default (including discard passdown), but if the
> underlying data device doesn't support discards then the discards will
> not be passed down.
> 
> And here are the feature controls that can be provided when loading the
> thin-pool's DM table:
> 
> ignore_discard: disable discard
> no_discard_passdown: don't pass discards down to the data device
> 
> -EOPNOTSUPP is only ever returned if 'ignore_discard' is provided.

Ok, so in this case 'ignore_discard' has been configured ?

Thanks!
-Lukas

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]