qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [RFC 0/2] osdep: warn if opening a file O_DIRECT on tmpfs f


From: Stefan Hajnoczi
Subject: [Qemu-devel] [RFC 0/2] osdep: warn if opening a file O_DIRECT on tmpfs fails
Date: Thu, 22 Aug 2013 10:34:57 +0200

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




reply via email to

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