Correctly handle O_APPEND in direct IO mode
authorMiklos Szeredi <miklos@szeredi.hu>
Wed, 14 Mar 2007 09:13:27 +0000 (09:13 +0000)
committerMiklos Szeredi <miklos@szeredi.hu>
Wed, 14 Mar 2007 09:13:27 +0000 (09:13 +0000)
ChangeLog
configure.in
kernel/file.c
lib/fuse.c

index 80398c5017cee9aefe36be9a68c5172d2c8226e3..0a287314730eff63192a94c2dccbb0f42ea28d07 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-03-05  Miklos Szeredi <miklos@szeredi.hu>
+
+       * Correctly handle O_APPEND in direct IO mode.  Reported by Greg
+       Bruno
+
 2007-02-03  Miklos Szeredi <miklos@szeredi.hu>
 
        * Add filesystem stacking support to high level API.  Filesystem
index 3020f3939e5fd0d8f08fd091d2e43ad294a04bda..b2ef187baacf6c420b6684c53e5114e94c8ed500 100644 (file)
@@ -88,7 +88,5 @@ AC_SUBST(subdirs2)
 AM_CONDITIONAL(LINUX, test "$arch" = linux)
 AM_CONDITIONAL(BSD, test "$arch" = bsd)
 
-AC_CHECK_HEADERS(selinux/selinux.h, AC_CHECK_LIB(selinux, getfilecon))
-
 AC_CONFIG_FILES([fuse.pc Makefile lib/Makefile util/Makefile example/Makefile include/Makefile])
 AC_OUTPUT
index d0f46adf6baa0c5c2e8726b1f0e996920319ce24..bdec3a5de96a94092f80fe7496c3d4ad9858e9e9 100644 (file)
@@ -627,7 +627,9 @@ static ssize_t fuse_direct_write(struct file *file, const char __user *buf,
        ssize_t res;
        /* Don't allow parallel writes to the same file */
        mutex_lock(&inode->i_mutex);
-       res = fuse_direct_io(file, buf, count, ppos, 1);
+       res = generic_write_checks(file, ppos, &count, 0);
+       if (!res)
+               res = fuse_direct_io(file, buf, count, ppos, 1);
        mutex_unlock(&inode->i_mutex);
        return res;
 }
index bc944c71670a85989568a2a505a036b3e57e015f..78a2547f5fc2412fa61cfa770f5cdfff712449cf 100644 (file)
@@ -3266,6 +3266,7 @@ static struct fuse *fuse_new_common_compat25(int fd, struct fuse_args *args,
    main() has been called) */
 void fuse_register_module(struct fuse_module *mod)
 {
+    mod->ctr = 0;
     mod->so = fuse_current_so;
     if (mod->so)
         mod->so->ctr++;