[Btrfs-devel] transaction ioctls

Sage Weil sage at newdream.net
Tue Apr 22 13:48:53 PDT 2008


On Tue, 22 Apr 2008, Chris Mason wrote:
> I'm definitely willing to include it for you to experiment with.  Holding a 
> transaction from userland can indeed lead to deadlock, but in this case your 
> userland basically owns the server anyway.  I'm worried about some nasty 
> corner cases still, but btrfs is blissfully ignoring those right now anyway.
> 
> One problem will be operations that are basically boundless (truncating a 
> file, large writes).  Eventually the ENOSPC support will hook into the 
> transaction system to make sure a given operation reserves enough free space.
> 
> With your ioctls, the "do a bunch of stuff" will need to honor the same 
> accounting rules as the kernel code (which don't exist yet).

So, if the transaction start ioctl made a space reservation, and if _all_ 
fs ops were wrapped by such reservations, that should avoid ENOSPC, yeah?

That's doesn't really help with the memory pressure issue, though.  :(

> I thought your original plan was to do all of this from userland (without a 
> kernel filesystem at all)?  The btrfs progs share most of the same code with 
> the kernel, so with a little love to the transaction and IO subsystems, you'd 
> be able to use it as a library style DB.

Yeah...  The issue is just that "a little love" is significantly more love 
than this handful of ioctls, and I'm a little wary of getting into it.  
That does seem like a better long term solution, though.

sage



More information about the Btrfs-devel mailing list