[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200701252052.38119.vda.linux@googlemail.com>
Date: Thu, 25 Jan 2007 20:52:38 +0100
From: Denis Vlasenko <vda.linux@...glemail.com>
To: Phillip Susi <psusi@....rr.com>
Cc: Michael Tokarev <mjt@....msk.ru>,
Linus Torvalds <torvalds@...l.org>, Viktor <vvp01@...ox.ru>,
Aubrey <aubreylee@...il.com>, Hua Zhong <hzhong@...il.com>,
Hugh Dickins <hugh@...itas.com>, linux-kernel@...r.kernel.org,
hch@...radead.org, kenneth.w.chen@in
Subject: Re: O_DIRECT question
On Thursday 25 January 2007 20:28, Phillip Susi wrote:
> > Ahhh shit, are you saying that fdatasync will wait until writes
> > *by all other processes* to thios file will hit the disk?
> > Is that thue?
>
> I think all processes yes, but certainly all writes to this file by this
> process. That means you have to sync for every write, which means you
> block. Blocking stalls the pipeline.
I dont understand you here. Suppose fdatasync() is "do not return until
all cached writes to this file *done by current process* hit the disk
(i.e. cached write data from other concurrent processes is not waited for),
report succes or error code". Then
write(fd_O_DIRECT, buf, sz) - will wait until buf's data hit the disk
write(fd, buf, sz) - potentially will return sooner, but
fdatasync(fd) - will wait until buf's data hit the disk
Looks same to me.
> > If you opened a file and are doing only O_DIRECT writes, you
> > *always* have your written data flushed, by each write().
> > How is it different from writes done using
> > "normal" write() + fdatasync() pairs?
>
> Because you can do writes async, but not fdatasync ( unless there is an
> async version I don't know about ).
You mean "You can use aio_write" ?
--
vda
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists