[Btrfs-devel] transaction ioctls

Chris Mason chris.mason at oracle.com
Wed Apr 23 06:23:03 PDT 2008


On Wednesday 23 April 2008, Evgeniy Polyakov wrote:
> On Wed, Apr 23, 2008 at 09:07:28AM -0400, Chris Mason 
(chris.mason at oracle.com) wrote:
> > But, userland expects things not to be undone.  Picture two procs
> > operating in a directory.  One proc calls fsync and gets assurance from
> > the FS that things are on disk.  The other proc calls rollback and undoes
> > the fsync.  The posix API isn't built around this.
>
> Rollback happens on transaction, so first application called fsync in
> own trasaction, which flushed data to disk, while second thread has own
> trasaction, and that data will be removed, while data written in first
> transaction is still on disk.

The kind of logging this requires is outside the scope of Btrfs ;)  It is 
possible if both procs are running in different tree roots, but how about:

proc A: mkdir dir1
proc A: create dir1/file1
proc B: add data to dir1/file1
proc B: fsync dir1/file1
proc A: rollback

Filesystems can be databases, but not with the current APIs.  Userland simply 
isn't built around these semantics today.

-chris



More information about the Btrfs-devel mailing list