hw/9pfs: Add yield support for open2 coroutine

Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
Venkateswararao Jujjuri 2011-08-08 23:52:33 +05:30 committed by Aneesh Kumar K.V
parent 857bc158d4
commit e4de423214
2 changed files with 22 additions and 0 deletions

View File

@ -60,3 +60,24 @@ int v9fs_co_open(V9fsState *s, V9fsFidState *fidp, int flags)
});
return err;
}
int v9fs_co_open2(V9fsState *s, V9fsFidState *fidp, char *fullname, gid_t gid,
int flags, int mode)
{
int err;
FsCred cred;
cred_init(&cred);
cred.fc_mode = mode & 07777;
cred.fc_uid = fidp->uid;
cred.fc_gid = gid;
v9fs_co_run_in_worker(
{
fidp->fs.fd = s->ops->open2(&s->ctx, fullname, flags, &cred);
err = 0;
if (fidp->fs.fd == -1) {
err = -errno;
}
});
return err;
}

View File

@ -79,4 +79,5 @@ 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);
extern int v9fs_co_open2(V9fsState *, V9fsFidState *, char *, gid_t, int, int);
#endif