qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC 0/2] osdep: warn if opening a file O_DIRECT on tmpfs fails
@ 2013-08-22  8:34 Stefan Hajnoczi
  2013-08-22  8:34 ` [Qemu-devel] [RFC 1/2] libcacard: link against qemu-error.o for error_report() Stefan Hajnoczi
  2013-08-22  8:34 ` [Qemu-devel] [RFC 2/2] osdep: warn if opening a file O_DIRECT on tmpfs fails Stefan Hajnoczi
  0 siblings, 2 replies; 3+ messages in thread
From: Stefan Hajnoczi @ 2013-08-22  8:34 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Markus Armbruster, Stefan Hajnoczi, Deepak C Shetty

This is an implementation of Dan and Eric's idea for probing a failed O_DIRECT
open(2) call to see if the file system does not support O_DIRECT.

I wanted to see what the implementation looks like but I don't like it:

1. We still need to guess if O_DIRECT is supported in the O_CREAT EINVAL case
   because we can't probe if O_CREAT | O_DIRECT | O_EXCL returned EINVAL.
2. There is a race condition between open(O_CREAT | O_EXCL | O_DIRECT) and
   opening again without O_CREAT.  If the file is deleted we'll get ENOENT
   which would have been impossible before.
3. It's way complicated.

Issue #1 gives me an idea: why play games when we can simply warn the user?

if (ret == -1 && errno == EINVAL && (flags & O_DIRECT)) {
    error_report("file system may not support O_DIRECT");
    errno = EINVAL; /* in case it was clobbered */
}

I think this simple, portable approach beats statfs tmpfs and open probing.
Will send a patch for that and plan to merge it.

Stefan Hajnoczi (2):
  libcacard: link against qemu-error.o for error_report()
  osdep: warn if opening a file O_DIRECT on tmpfs fails

 libcacard/Makefile |  3 ++-
 util/osdep.c       | 62 ++++++++++++++++++++++++++++++++++++++++++++++++------
 2 files changed, 57 insertions(+), 8 deletions(-)

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-08-22  8:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-22  8:34 [Qemu-devel] [RFC 0/2] osdep: warn if opening a file O_DIRECT on tmpfs fails Stefan Hajnoczi
2013-08-22  8:34 ` [Qemu-devel] [RFC 1/2] libcacard: link against qemu-error.o for error_report() Stefan Hajnoczi
2013-08-22  8:34 ` [Qemu-devel] [RFC 2/2] osdep: warn if opening a file O_DIRECT on tmpfs fails Stefan Hajnoczi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).