NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/47937: mount -o discard,log is broken



The following reply was made to PR kern/47937; it has been noted by GNATS.

From: David Holland <dholland-bugs%netbsd.org@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: kern/47937: mount -o discard,log is broken
Date: Mon, 17 Jun 2013 00:33:30 +0000

 On Sun, Jun 16, 2013 at 11:20:01PM +0000, Jeff Rizzo wrote:
  >  With some help from riastradh@, this actually seems to make it work:
  >
  > [snip]
 
 It would probably be a good idea to make sure it doesn't break
 recovery. In WAPBL block freeing already goes through one layer of
 delayed action; it's quite possible that delaying things longer will
 violate assumptions made by the recovery logic.
 
 The case I'd be particularly worried about is if you delete a bunch of
 things, it goes to commit all the transactions and does so and then
 writes a snapshot; but the blocks haven't actually been freed yet so
 if you then crash and recover to that snapshot you'll leak all the
 blocks.
 
 But that's not the only one.
 
 It would be helpful to test it. Testing recovery is in general
 difficult, but for this it's probably sufficient to try these cases:
 
 (a) put an unconditional panic in the discard path before starting a
 wapbl transaction;
 
 (b) put "if (counter++ == 500) panic()" inside the wapbl transaction;
 
 and for both cases rm -r a sizeable tree (including at least some
 large files that have indirect blocks...). Then afterwards let the
 journal recovery run and then fsck.
 
 I'll be much more comfortable with this if it fscks clean reliably
 under such circumstances.
 
 Why does TRIM get run in the background like this at all, anyway? Are
 we concerned about it being slow?
 
 -- 
 David A. Holland
 dholland%netbsd.org@localhost
 


Home | Main Index | Thread Index | Old Index