From 6d07017e38fdbdec6037ba6f58daa6670ca7ab74 Mon Sep 17 00:00:00 2001 From: Marc Rittinghaus Date: Wed, 12 Apr 2023 15:19:43 +0200 Subject: [PATCH] lib/9pfs: Add fsync to 9P_PROTO_2000U 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 Reviewed-by: Ioan-Teodor Teugea Reviewed-by: Razvan Deaconescu Approved-by: Razvan Deaconescu Tested-by: Unikraft CI GitHub-Closes: #834 --- lib/9pfs/9pfs_vnops.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/9pfs/9pfs_vnops.c b/lib/9pfs/9pfs_vnops.c index cfe7e07ca..df405a09e 100644 --- a/lib/9pfs/9pfs_vnops.c +++ b/lib/9pfs/9pfs_vnops.c @@ -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) -- 2.39.5