[Btrfs-devel] transaction ioctls

Bron Gondwana brong at fastmail.fm
Wed Apr 23 16:52:08 PDT 2008


On Wed, Apr 23, 2008 at 09:23:03AM -0400, Chris Mason wrote:
> 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.

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

I don't see the difference.

Bron.



More information about the Btrfs-devel mailing list