Re: Proposal for "proper" durable fsync() and fdatasync()

Jamie Lokier
2008-11-25T10:17:31Z

Sachin Gaikwad wrote:
> > No, fsync() doesn't always flush the drive's write cache. It often
> > does, any I think many people are under the impression it always does,
> > but it doesn't.
> >
> > Try this code on ext3:
> >
> > fd = open ("test_file", O_RDWR | O_CREAT | O_TRUNC, 0666);
> > while (1) {
> > char byte;
> > usleep (100000);
> > pwrite (fd, &byte, 1, 0);
> > fsync (fd);
> > }
> >
> > It will do just over 10 write ops per second on an idle system (13 on
> > mine), and 1 flush op per second.
>
> How did you measure write-ops and flush-ops ? Is there any tool which
> can be used ? I tried looking at what CONFIG_BSD_PROCESS_ACCT
> provides, but no luck.

I don't remember; it was such a long time ago!

It probably involved looking at /sys/block/*/stat or something like that.

You might find the "blktrace" tool does what you want.

-- Jamie