Alfred Perlstein wrote:
>
> * Andre Oppermann <[EMAIL PROTECTED]> [010206 12:33] wrote:
> > Alfred Perlstein wrote:
> > >
> > > * Andre Oppermann <[EMAIL PROTECTED]> [010206 12:07] wrote:
> > > >
> > > > Yes, my understanding of the meaning of "ordered meta-date update" as
> > > > I have grasped it from Terry's rants in the past years is not that all
> > > > meta-data updates on a filesystem have to be done one-after-the-other
> > > > but ordered in respect to each other; That a link() happens before a
> > > > unlink() on the same file. Does this make sense?
> > >
> > > Only when done by a single process or something waits for the link
> > > to complete before starting the unlink. If two processes "race"
> > > to link and unlink then no.
> >
> > It is just one process waiting for the link() to complete. And then
> > unlink(). After completion a IPC signal is send to another process
> > to pick the file up and continue processing.
>
> Basically, you want a fsync right before the IPC. This should
> bring the metadata up to date with what's in-core and you should
> then be safe when you reply with your 250 accepted message.
Like this (from qmail-queue):
...
if (fsync(intdfd) == -1) die_write();
if (link(intdfn,todofn) == -1) die(66);
triggerpull();
die(0);
}
Actually for initial queueing it doesn't even unlink() but leaves
it to the next program. Can't be more safe, can it?
Conclusion: Qmail is a very fine and well thought out piece of
software and facilitates what the BSD API provides
for it's very own purpose...
--
Andre
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message