[Top][All Lists]

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

Re: [Qemu-devel] [PATCH 2/4] block: use fdatasync instead of fsync

From: Jamie Lokier
Subject: Re: [Qemu-devel] [PATCH 2/4] block: use fdatasync instead of fsync
Date: Mon, 31 Aug 2009 23:48:19 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

Christoph Hellwig wrote:
> On Mon, Aug 31, 2009 at 10:51:38PM +0100, Jamie Lokier wrote:
> > Christoph Hellwig wrote:
> > > 
> > > If we are flushing the caches for our image files we only care about the
> > > data (including the metadata required for accessing it) but not things
> > > like timestamp updates.  So use fdatasync instead of fsync to implement
> > > the flush operations.
> > 
> > > -    fsync(s->fd);
> > > +    fdatasync(s->fd);
> > 
> > I believe fsync was used because of uncertainty about whether
> > fdatasync reliably flushes the necessary metadata to access the data
> > on all hosts, after things like writing to holes and extending a file.
> > 
> > I'm still not sure if fdatasync provides that guarantee on Linux.
> fdatasync is defined to provide that guarantee, and modulo the whole
> clusterfuck around volatile write caches it does the right thing
> thing on common Linux filesystems.

That's good to know.  I'm not sure about other hosts though.  It's
specified to update the metadata, but I think I've encountered people
saying it doesn't - specifically when extending a file, that it
doesn't guarantee the file size is extended on some OSes.  But that
might be an urban myth.

-- Jamie

reply via email to

[Prev in Thread] Current Thread [Next in Thread]