RFC: Pass TRIM through GELI
Pawel Jakub Dawidek
pjd at FreeBSD.org
Mon Mar 16 09:57:45 UTC 2015
On Mon, Mar 16, 2015 at 04:21:26AM -0500, Matthew D. Fuller wrote:
> On Mon, Mar 16, 2015 at 02:08:45AM +0100 I heard the voice of
> Pawel Jakub Dawidek, and lo! it spake thus:
> >
> > Overall the patch looks good. The main concern I have is that we do
> > nothing if the underlying provider returns EOPNOTSUPP on BIO_DELETE,
> > we will just keep sending those requests.
>
> Well, they're all coming from the layer above us, and it'll get back
> the EOPNOTSUPP's, so if it keeps sending them anyway that seems more
> like its problem than ours. It seems like intercepting the response
> (that would mean making our own new request, getting the response,
> then making that response ourselves to the original?) wouldn't really
> save much of anything, and adds a lot of extra bug-havens...
You are right. I read your reasoning you've sent earlier after sending
my e-mail.
> > This whole comment needs to be rewritten.
>
> How about:
>
> /*
> * If the user has set the DELETE flag, we just pass it
> * down the stack and let the layers beneath us do (or
> * not) whatever they do with it. Else we currently just
> * reject it. A possible extension would be to take it
> * as a hint to shred the data with [multiple?]
> * overwrites.
> */
Looks good, thanks.
> > + if (sc->sc_flags & G_ELI_FLAG_ONETIME) {
> > + gctl_error(req, "Cannot change configuration of "
> > + "onetime provider %s.", prov);
> > + continue;
> > + }
> >
> > Actually, nothing stops us from allowing to change trim/notrim for
> > one-time providers.
>
> Well, what stops us right now is the bit where it somehow finds
> metadata version 2468898832 when it tries, and then panics :(. It
> happened with both my changes and the existing code, so I figured it
> was just an artifact of something onetime did, and nobody ever cared
> (or tried) configure'ing one.
>
> In a quick re-test, I actually can't trigger it on a bare device, but
> on top of gnop it happens every time (with both original and my code).
> Nothing special, just an arg-less nop, and an arg-less onetime we
> 'configure -b' afterward. That makes it a little more concerning...
> I guess it needs more looking into; 0'd out the conditional in the
> .4.patch pending more investigation.
Rejecting -b/-B for one-time providers is of course fine. Accepting
-t/-T for one-time providers would be nice to have, but of course
nothing critical. Still would be good to know the root cause of what you
are seeing.
--
Pawel Jakub Dawidek http://www.wheelsystems.com
FreeBSD committer http://www.FreeBSD.org
Am I Evil? Yes, I Am! http://mobter.com
More information about the freebsd-geom
mailing list