Date: Fri, 19 May 2000 17:38:47 +0000 (GMT) From: Terry Lambert <tlambert@primenet.com> To: hasty@rah.star-gate.com (Amancio Hasty) Cc: tlambert@primenet.com (Terry Lambert), cp@bsdi.com (Chuck Paterson), wes@softweyr.com (Wes Peters), dfr@nlsystems.com (Doug Rabson), arch@FreeBSD.ORG Subject: Re: A new api for asynchronous task execution Message-ID: <200005191738.KAA29763@usr02.primenet.com> In-Reply-To: <200005190000.RAA07951@rah.star-gate.com> from "Amancio Hasty" at May 18, 2000 05:00:35 PM
next in thread | previous in thread | raw e-mail | index | archive | help
> > There are better soloutions that permit resource risk, however, > > but they require that you be able to back completely out of a > > partial transaction, and retry the whole thing, e.g. continuing: > > Hmm... Given that in an OS scenario one may not be able to > restore the state of a partially committed transaction , I think > that transaction style processing is not appropiate for > exclusiveness of operations. Unless of course one is willing > to virtualize the machine states and then commit a fully > completed transaction which is somewhat what databases > such as Oracle do. Soft updates does precisely this, in an OS scenario. The requirement for backing out a directory modification that would result in an entry pointing to an uncommitted inode, when in the same block, there is another new entry that would point to a committed inode, is an example. In this case, the directory modification is "backed out" of the copy to be committed, but it remains in the soft updates synchronization clock for a later commit. Julian likens this to a "copy on write", but it's really "uncopy on commit". This approach permits you to create two files, "A" and "B", where the inode for "A" is committed to disk, the inode for "B" is pending commit to disk, "A" and "B" are in the same directory entry block, and you want to commit the directory entry for "A" because its dependencies have been satisfied, but not the one for "B", because its dependencies have not been satisfied. So you copy the directory entry block, zero the "B" entry, as if it had been deleted, and put the copy with the "A" - "B" contents earlier in the clock than the original with the "A" + "B" contents. The "A" - "B" version is committed to stable storage, and soft updates thus works. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200005191738.KAA29763>