* Add missing setattr flags to <fuse_lowlevel.h>.
authorMiklos Szeredi <miklos@szeredi.hu>
Mon, 8 Dec 2008 21:53:35 +0000 (21:53 +0000)
committerMiklos Szeredi <miklos@szeredi.hu>
Mon, 8 Dec 2008 21:53:35 +0000 (21:53 +0000)
* Only pass valid flags to ->setattr().

ChangeLog
include/fuse_lowlevel.h
lib/fuse_lowlevel.c

index 8b3a9c72a2b5d5d3a337a75dccc8f6088e5730f8..fef3467a8f07e4c257de69fd3a935070eb867003 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
 
        * Implement poll support.  Patch by Tejun Heo
 
+       * Add missing setattr flags to <fuse_lowlevel.h>.
+
+       * Only pass valid flags to ->setattr().
+
 2008-12-05  Miklos Szeredi <miklos@szeredi.hu>
 
        * Implement ioctl support.  On high level interface only
index 0b832149b1eadfb99b98c850cb75e9e0fbf2a062..d7418e7f8828c6acfb46c30d2bfa5b011aba5d1f 100644 (file)
@@ -118,6 +118,8 @@ struct fuse_ctx {
 #define FUSE_SET_ATTR_SIZE     (1 << 3)
 #define FUSE_SET_ATTR_ATIME    (1 << 4)
 #define FUSE_SET_ATTR_MTIME    (1 << 5)
+#define FUSE_SET_ATTR_ATIME_NOW        (1 << 7)
+#define FUSE_SET_ATTR_MTIME_NOW        (1 << 8)
 
 /* ----------------------------------------------------------- *
  * Request methods and replies                                *
index 026de307733498251bddca96f1e42ea844ec4fcd..e62e35851a9ab93d22154a2f038cae84dede824d 100644 (file)
@@ -578,6 +578,16 @@ static void do_setattr(fuse_req_t req, fuse_ino_t nodeid, const void *inarg)
                        fi->fh = arg->fh;
                        fi->fh_old = fi->fh;
                }
+               arg->valid &=
+                       FUSE_SET_ATTR_MODE      |
+                       FUSE_SET_ATTR_UID       |
+                       FUSE_SET_ATTR_GID       |
+                       FUSE_SET_ATTR_SIZE      |
+                       FUSE_SET_ATTR_ATIME     |
+                       FUSE_SET_ATTR_MTIME     |
+                       FUSE_SET_ATTR_ATIME_NOW |
+                       FUSE_SET_ATTR_MTIME_NOW;
+
                req->f->op.setattr(req, nodeid, &stbuf, arg->valid, fi);
        } else
                fuse_reply_err(req, ENOSYS);