Skip site navigation (1)Skip section navigation (2)
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>