]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/9pfs: Add fsync to 9P_PROTO_2000U
authorMarc Rittinghaus <marc.rittinghaus@unikraft.io>
Wed, 12 Apr 2023 13:19:43 +0000 (15:19 +0200)
committerUnikraft <monkey@unikraft.io>
Wed, 26 Apr 2023 10:28:33 +0000 (10:28 +0000)
Using the unmodified "dont-touch" stat structure in uk_9pfs_setattr is
equivalent to performing an fsync on the file.

Signed-off-by: Marc Rittinghaus <marc.rittinghaus@unikraft.io>
Reviewed-by: Ioan-Teodor Teugea <teodor.teugea@gmail.com>
Reviewed-by: Razvan Deaconescu <razvand@unikraft.io>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #834

lib/9pfs/9pfs_vnops.c

index cfe7e07ca368a5c3ad174cf91762b51135b7d822..df405a09ee1a5081cbcabda2896b684e8b0a774f 100644 (file)
@@ -885,10 +885,15 @@ static int uk_9pfs_fsync(struct vnode *vp, struct vfscore_file *fp)
        struct uk_9pfs_mount_data *md = UK_9PFS_MD(vp->v_mount);
        struct uk_9pfid *fid = UK_9PFS_FD(fp)->fid;
 
-       if (md->proto == UK_9P_PROTO_2000L)
+       if (md->proto == UK_9P_PROTO_2000L) {
                return -uk_9p_fsync(md->dev, fid);
-       else
+       } else if (md->proto == UK_9P_PROTO_2000U) {
+               return uk_9pfs_setattr(vp, &(struct vattr){
+                       .va_mask = 0
+               });
+       } else {
                return 0;
+       }
 }
 
 static int uk_9pfs_truncate(struct vnode *vp, off_t off)