Patchwork osdep: Less restrictive F_SEFL in qemu_dup_flags()

login
register
mail settings
Submitter Corey Bryant
Date Oct. 18, 2012, 8:41 p.m.
Message ID <1350592864-10408-1-git-send-email-coreyb@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/192436/
State New
Headers show

Comments

Corey Bryant - Oct. 18, 2012, 8:41 p.m.
qemu_dup_flags() currently limits the flags that can be set on the
fcntl() F_SETFL call to those that we currently know can be set with
fcntl() F_SETFL.  The problem with this is that it will prevent use
of new flags in the future without a code update.

This patch relaxes the checking and lets fcntl() determine the flags
it can set.

Signed-off-by: Corey Bryant <coreyb@linux.vnet.ibm.com>
---
 osdep.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)
Kevin Wolf - Oct. 23, 2012, 2:37 p.m.
Am 18.10.2012 22:41, schrieb Corey Bryant:
> qemu_dup_flags() currently limits the flags that can be set on the
> fcntl() F_SETFL call to those that we currently know can be set with
> fcntl() F_SETFL.  The problem with this is that it will prevent use
> of new flags in the future without a code update.
> 
> This patch relaxes the checking and lets fcntl() determine the flags
> it can set.
> 
> Signed-off-by: Corey Bryant <coreyb@linux.vnet.ibm.com>

Thanks, applied to the block branch.

Kevin

Patch

diff --git a/osdep.c b/osdep.c
index 3b25297..c822a01 100644
--- a/osdep.c
+++ b/osdep.c
@@ -88,7 +88,6 @@  static int qemu_dup_flags(int fd, int flags)
     int ret;
     int serrno;
     int dup_flags;
-    int setfl_flags;
 
 #ifdef F_DUPFD_CLOEXEC
     ret = fcntl(fd, F_DUPFD_CLOEXEC, 0);
@@ -113,16 +112,7 @@  static int qemu_dup_flags(int fd, int flags)
     }
 
     /* Set/unset flags that we can with fcntl */
-    setfl_flags = O_APPEND | O_ASYNC | O_NONBLOCK;
-#ifdef O_NOATIME
-    setfl_flags |= O_NOATIME;
-#endif
-#ifdef O_DIRECT
-    setfl_flags |= O_DIRECT;
-#endif
-    dup_flags &= ~setfl_flags;
-    dup_flags |= (flags & setfl_flags);
-    if (fcntl(ret, F_SETFL, dup_flags) == -1) {
+    if (fcntl(ret, F_SETFL, flags) == -1) {
         goto fail;
     }