From 371a269ff8ce561c28e4fa03bb49e4940f990637 Mon Sep 17 00:00:00 2001 From: Greg Kurz Date: Wed, 12 Mar 2025 16:29:30 +0100 Subject: 9pfs: Introduce futimens file op Add an futimens operation to the fs driver and use if when a fid has a valid file descriptor. This is required to support more cases where the client wants to do an action on an unlinked file which it still has an open file decriptor for. Only 9P2000.L was considered. Signed-off-by: Greg Kurz Reviewed-by: Christian Schoenebeck Message-Id: <20250312152933.383967-5-groug@kaod.org> Signed-off-by: Christian Schoenebeck --- hw/9pfs/cofs.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'hw/9pfs/cofs.c') diff --git a/hw/9pfs/cofs.c b/hw/9pfs/cofs.c index 893466fb1a..12fa8c9fe9 100644 --- a/hw/9pfs/cofs.c +++ b/hw/9pfs/cofs.c @@ -139,6 +139,25 @@ int coroutine_fn v9fs_co_utimensat(V9fsPDU *pdu, V9fsPath *path, return err; } +int coroutine_fn v9fs_co_futimens(V9fsPDU *pdu, V9fsFidState *fidp, + struct timespec times[2]) +{ + int err; + V9fsState *s = pdu->s; + + if (v9fs_request_cancelled(pdu)) { + return -EINTR; + } + v9fs_co_run_in_worker( + { + err = s->ops->futimens(&s->ctx, fidp->fid_type, &fidp->fs, times); + if (err < 0) { + err = -errno; + } + }); + return err; +} + int coroutine_fn v9fs_co_chown(V9fsPDU *pdu, V9fsPath *path, uid_t uid, gid_t gid) { -- cgit 1.4.1