DragonFly BSD
DragonFly kernel List (threaded) for 2004-12
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: Description of the Journaling topology


From: David Cuthbert <dacut@xxxxxxxxx>
Date: Fri, 31 Dec 2004 01:12:12 -0500

Matthew Dillon wrote:
Even more key is the off-site capability. If the journal is a TCP
connection to another machine the buffering delay could be as little
as a millisecond before the data gets to the target machine, and the
local disks would not be impacted at all. The originating machine could immediately crash without really messing anything up, even if
the data has not yet been committed to hard storage on the target
machine.

This is potentially dangerous. In general, I think you want the journalling to occur as close to the storage as possible -- i.e., on the *target* machine, not the originating machine.


The scenario I'm thinking of -- one not too uncommon when running unwieldy makefiles -- is as follows: (A and B are NFS clients, T is the NFS server):

A: rmdir() called
A:   rmdir() journalled
A:   rmdir() sent to server
T: directory is removed
A: crashes
B: mkdir() called on same directory
B:   mkdir() journalled
B:   mkdir() sent to server
B:   mkdir() journal marked as complete.
T: directory is created
[a day later...]
A: reboots, starts replaying journal
A:   rmdir() sent to server
A:   rmdir() journal marked as complete.
T: directory is removed

Thus, one rmdir() call ends up being called twice. Or am I missing something?



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