Re: O_DIRECT question

From: Phillip Susi
Date: Thu Jan 25 2007 - 14:29:03 EST


Denis Vlasenko wrote:
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 ).

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.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/