hw/9pfs: Add yield support for open and opendir coroutine
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
parent
e4e414a427
commit
f6b7f0ab5c
@ -83,3 +83,19 @@ int v9fs_co_mkdir(V9fsState *s, char *name, mode_t mode, uid_t uid, gid_t gid)
|
||||
});
|
||||
return err;
|
||||
}
|
||||
|
||||
int v9fs_co_opendir(V9fsState *s, V9fsFidState *fidp)
|
||||
{
|
||||
int err;
|
||||
|
||||
v9fs_co_run_in_worker(
|
||||
{
|
||||
fidp->fs.dir = s->ops->opendir(&s->ctx, fidp->path.data);
|
||||
if (!fidp->fs.dir) {
|
||||
err = -errno;
|
||||
} else {
|
||||
err = 0;
|
||||
}
|
||||
});
|
||||
return err;
|
||||
}
|
||||
|
@ -44,3 +44,19 @@ int v9fs_co_fstat(V9fsState *s, int fd, struct stat *stbuf)
|
||||
});
|
||||
return err;
|
||||
}
|
||||
|
||||
int v9fs_co_open(V9fsState *s, V9fsFidState *fidp, int flags)
|
||||
{
|
||||
int err;
|
||||
|
||||
v9fs_co_run_in_worker(
|
||||
{
|
||||
fidp->fs.fd = s->ops->open(&s->ctx, fidp->path.data, flags);
|
||||
if (fidp->fs.fd == -1) {
|
||||
err = -errno;
|
||||
} else {
|
||||
err = 0;
|
||||
}
|
||||
});
|
||||
return err;
|
||||
}
|
||||
|
@ -77,4 +77,6 @@ extern int v9fs_co_mkdir(V9fsState *, char *, mode_t, uid_t, gid_t);
|
||||
extern int v9fs_co_remove(V9fsState *, V9fsString *);
|
||||
extern int v9fs_co_rename(V9fsState *, V9fsString *, V9fsString *);
|
||||
extern int v9fs_co_fstat(V9fsState *, int, struct stat *);
|
||||
extern int v9fs_co_opendir(V9fsState *, V9fsFidState *);
|
||||
extern int v9fs_co_open(V9fsState *, V9fsFidState *, int);
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user