hw/9pfs: Update v9fs_fsync to use coroutines

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
This commit is contained in:
Aneesh Kumar K.V 2011-05-07 21:25:51 +05:30
parent 4743d1f5d3
commit 4e9ad44498
1 changed files with 11 additions and 16 deletions

View File

@ -1530,33 +1530,28 @@ out:
v9fs_string_free(&fullname); v9fs_string_free(&fullname);
} }
static void v9fs_post_do_fsync(V9fsState *s, V9fsPDU *pdu, int err)
{
if (err == -1) {
err = -errno;
}
complete_pdu(s, pdu, err);
}
static void v9fs_fsync(void *opaque) static void v9fs_fsync(void *opaque)
{ {
V9fsPDU *pdu = opaque; int err;
V9fsState *s = pdu->s;
int32_t fid; int32_t fid;
int datasync;
size_t offset = 7; size_t offset = 7;
V9fsFidState *fidp; V9fsFidState *fidp;
int datasync; V9fsPDU *pdu = opaque;
int err; V9fsState *s = pdu->s;
pdu_unmarshal(pdu, offset, "dd", &fid, &datasync); pdu_unmarshal(pdu, offset, "dd", &fid, &datasync);
fidp = lookup_fid(s, fid); fidp = lookup_fid(s, fid);
if (fidp == NULL) { if (fidp == NULL) {
err = -ENOENT; err = -ENOENT;
v9fs_post_do_fsync(s, pdu, err); goto out;
return;
} }
err = v9fs_do_fsync(s, fidp->fs.fd, datasync); err = v9fs_co_fsync(s, fidp, datasync);
v9fs_post_do_fsync(s, pdu, err); if (!err) {
err = offset;
}
out:
complete_pdu(s, pdu, err);
} }
static void v9fs_clunk(void *opaque) static void v9fs_clunk(void *opaque)