From b2515170789f83f16c750d7b055374e2cc266bed Mon Sep 17 00:00:00 2001 From: Marc Rittinghaus Date: Wed, 12 Apr 2023 15:22:54 +0200 Subject: [PATCH] lib/9pfs: Add truncate to 9P_PROTO_2000U When providing a length in the stat structure the 9pfs server on the host will truncate the file to the specified size. We use this to also enable truncation for the 2000U protocol version. Since uk_9pfs_setattr checks for the protocol to use, the check can be completely dropped in uk_9pfs_truncate. 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 | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/lib/9pfs/9pfs_vnops.c b/lib/9pfs/9pfs_vnops.c index df405a09e..4827150de 100644 --- a/lib/9pfs/9pfs_vnops.c +++ b/lib/9pfs/9pfs_vnops.c @@ -898,17 +898,10 @@ static int uk_9pfs_fsync(struct vnode *vp, struct vfscore_file *fp) static int uk_9pfs_truncate(struct vnode *vp, off_t off) { - struct uk_9pfs_mount_data *md = UK_9PFS_MD(vp->v_mount); - - if (md->proto == UK_9P_PROTO_2000L) { - struct vattr attr = { - .va_mask = AT_SIZE, - .va_size = off, - }; - return uk_9pfs_setattr(vp, &attr); - } else { - return 0; - } + return uk_9pfs_setattr(vp, &(struct vattr){ + .va_mask = AT_SIZE, + .va_size = off, + }); } static int uk_9pfs_rename(struct vnode *dvp1, struct vnode *vp1, char *name1, -- 2.39.5