#define VIRTIO_FS_FUSE_MODE_PERM_ROTH 0000004u\r
#define VIRTIO_FS_FUSE_MODE_PERM_WOTH 0000002u\r
\r
+//\r
+// Flags for VirtioFsFuseOpSetAttr, in the VIRTIO_FS_FUSE_SETATTR_REQUEST.Valid\r
+// field.\r
+//\r
+#define VIRTIO_FS_FUSE_SETATTR_REQ_F_MODE BIT0\r
+#define VIRTIO_FS_FUSE_SETATTR_REQ_F_SIZE BIT3\r
+#define VIRTIO_FS_FUSE_SETATTR_REQ_F_ATIME BIT4\r
+#define VIRTIO_FS_FUSE_SETATTR_REQ_F_MTIME BIT5\r
+\r
//\r
// Flags for VirtioFsFuseOpOpen.\r
//\r
VirtioFsFuseOpLookup = 1,\r
VirtioFsFuseOpForget = 2,\r
VirtioFsFuseOpGetAttr = 3,\r
+ VirtioFsFuseOpSetAttr = 4,\r
VirtioFsFuseOpMkDir = 9,\r
VirtioFsFuseOpUnlink = 10,\r
VirtioFsFuseOpRmDir = 11,\r
} VIRTIO_FS_FUSE_FORGET_REQUEST;\r
\r
//\r
-// Headers for VirtioFsFuseOpGetAttr.\r
+// Headers for VirtioFsFuseOpGetAttr (VIRTIO_FS_FUSE_GETATTR_RESPONSE is also\r
+// for VirtioFsFuseOpSetAttr).\r
//\r
typedef struct {\r
UINT32 GetAttrFlags;\r
UINT32 Dummy;\r
} VIRTIO_FS_FUSE_GETATTR_RESPONSE;\r
\r
+//\r
+// Header for VirtioFsFuseOpSetAttr.\r
+//\r
+typedef struct {\r
+ UINT32 Valid;\r
+ UINT32 Padding;\r
+ UINT64 FileHandle;\r
+ UINT64 Size;\r
+ UINT64 LockOwner;\r
+ UINT64 Atime;\r
+ UINT64 Mtime;\r
+ UINT64 Ctime;\r
+ UINT32 AtimeNsec;\r
+ UINT32 MtimeNsec;\r
+ UINT32 CtimeNsec;\r
+ UINT32 Mode;\r
+ UINT32 Unused4;\r
+ UINT32 Uid;\r
+ UINT32 Gid;\r
+ UINT32 Unused5;\r
+} VIRTIO_FS_FUSE_SETATTR_REQUEST;\r
+\r
//\r
// Header for VirtioFsFuseOpMkDir.\r
//\r