@@ -770,7 +770,6 @@ out:
typedef struct V9fsStatState {
V9fsPDU *pdu;
size_t offset;
- int32_t fid;
V9fsStat v9stat;
V9fsFidState *fidp;
struct stat stbuf;
@@ -798,6 +797,7 @@ out:
static void v9fs_stat(V9fsState *s, V9fsPDU *pdu)
{
+ int32_t fid;
V9fsStatState *vs;
ssize_t err = 0;
@@ -807,9 +807,9 @@ static void v9fs_stat(V9fsState *s, V9fsPDU *pdu)
memset(&vs->v9stat, 0, sizeof(vs->v9stat));
- pdu_unmarshal(vs->pdu, vs->offset, "d", &vs->fid);
+ pdu_unmarshal(vs->pdu, vs->offset, "d", &fid);
- vs->fidp = lookup_fid(s, vs->fid);
+ vs->fidp = lookup_fid(s, fid);
if (vs->fidp == NULL) {
err = -ENOENT;
goto out;
@@ -828,8 +828,6 @@ out:
typedef struct V9fsWalkState {
V9fsPDU *pdu;
size_t offset;
- int32_t fid;
- int32_t newfid;
int16_t nwnames;
int name_idx;
V9fsQID *qids;
@@ -867,7 +865,7 @@ static void v9fs_walk_post_newfid_lstat(V9fsState *s, V9fsWalkState *vs,
int err)
{
if (err == -1) {
- free_fid(s, vs->newfid);
+ free_fid(s, vs->newfidp->fid);
v9fs_string_free(&vs->path);
err = -ENOENT;
goto out;
@@ -924,6 +922,7 @@ out:
static void v9fs_walk(V9fsState *s, V9fsPDU *pdu)
{
+ int32_t fid, newfid;
V9fsWalkState *vs;
int err = 0;
int i;
@@ -934,8 +933,8 @@ static void v9fs_walk(V9fsState *s, V9fsPDU *pdu)
vs->qids = NULL;
vs->offset = 7;
- vs->offset += pdu_unmarshal(vs->pdu, vs->offset, "ddw", &vs->fid,
- &vs->newfid, &vs->nwnames);
+ vs->offset += pdu_unmarshal(vs->pdu, vs->offset, "ddw", &fid,
+ &newfid, &vs->nwnames);
if(vs->nwnames) {
vs->wnames = qemu_mallocz(sizeof(vs->wnames[0]) * vs->nwnames);
@@ -948,14 +947,14 @@ static void v9fs_walk(V9fsState *s, V9fsPDU *pdu)
}
}
- vs->fidp = lookup_fid(s, vs->fid);
+ vs->fidp = lookup_fid(s, fid);
if (vs->fidp == NULL) {
err = -ENOENT;
goto out;
}
/* FIXME: is this really valid? */
- if (vs->fid == vs->newfid) {
+ if (fid == newfid) {
v9fs_string_init(&vs->path);
vs->name_idx = 0;
@@ -969,7 +968,7 @@ static void v9fs_walk(V9fsState *s, V9fsPDU *pdu)
return;
}
} else {
- vs->newfidp = alloc_fid(s, vs->newfid);
+ vs->newfidp = alloc_fid(s, newfid);
if (vs->newfidp == NULL) {
err = -EINVAL;
goto out;
@@ -1000,7 +999,6 @@ out:
typedef struct V9fsOpenState {
V9fsPDU *pdu;
size_t offset;
- int32_t fid;
int8_t mode;
V9fsFidState *fidp;
V9fsQID qid;
@@ -1105,7 +1103,7 @@ out:
static void v9fs_open(V9fsState *s, V9fsPDU *pdu)
{
-
+ int32_t fid;
V9fsOpenState *vs;
ssize_t err = 0;
@@ -1114,9 +1112,9 @@ static void v9fs_open(V9fsState *s, V9fsPDU *pdu)
vs->pdu = pdu;
vs->offset = 7;
- pdu_unmarshal(vs->pdu, vs->offset, "db", &vs->fid, &vs->mode);
+ pdu_unmarshal(vs->pdu, vs->offset, "db", &fid, &vs->mode);
- vs->fidp = lookup_fid(s, vs->fid);
+ vs->fidp = lookup_fid(s, fid);
if (vs->fidp == NULL) {
err = -ENOENT;
goto out;
@@ -1183,7 +1181,6 @@ static void print_sg(struct iovec *sg, int cnt)
typedef struct V9fsReadState {
V9fsPDU *pdu;
size_t offset;
- int32_t fid;
int32_t count;
int32_t total;
int64_t off;
@@ -1346,6 +1343,7 @@ out:
static void v9fs_read(V9fsState *s, V9fsPDU *pdu)
{
+ int32_t fid;
V9fsReadState *vs;
ssize_t err = 0;
@@ -1356,9 +1354,9 @@ static void v9fs_read(V9fsState *s, V9fsPDU *pdu)
vs->len = 0;
vs->count = 0;
- pdu_unmarshal(vs->pdu, vs->offset, "dqd", &vs->fid, &vs->off, &vs->count);
+ pdu_unmarshal(vs->pdu, vs->offset, "dqd", &fid, &vs->off, &vs->count);
- vs->fidp = lookup_fid(s, vs->fid);
+ vs->fidp = lookup_fid(s, fid);
if (vs->fidp == NULL) {
err = -EINVAL;
goto out;
@@ -1407,7 +1405,6 @@ out:
typedef struct V9fsWriteState {
V9fsPDU *pdu;
size_t offset;
- int32_t fid;
int32_t len;
int32_t count;
int32_t total;
@@ -1476,6 +1473,7 @@ out:
static void v9fs_write(V9fsState *s, V9fsPDU *pdu)
{
+ int32_t fid;
V9fsWriteState *vs;
ssize_t err;
@@ -1487,10 +1485,10 @@ static void v9fs_write(V9fsState *s, V9fsPDU *pdu)
vs->total = 0;
vs->len = 0;
- pdu_unmarshal(vs->pdu, vs->offset, "dqdv", &vs->fid, &vs->off, &vs->count,
+ pdu_unmarshal(vs->pdu, vs->offset, "dqdv", &fid, &vs->off, &vs->count,
vs->sg, &vs->cnt);
- vs->fidp = lookup_fid(s, vs->fid);
+ vs->fidp = lookup_fid(s, fid);
if (vs->fidp == NULL) {
err = -EINVAL;
goto out;
@@ -1514,7 +1512,6 @@ out:
typedef struct V9fsCreateState {
V9fsPDU *pdu;
size_t offset;
- int32_t fid;
V9fsFidState *fidp;
V9fsQID qid;
int32_t perm;
@@ -1652,12 +1649,10 @@ static void v9fs_create_post_lstat(V9fsState *s, V9fsCreateState *vs, int err)
} else if (vs->perm & P9_STAT_MODE_LINK) {
int32_t nfid = atoi(vs->extension.data);
V9fsFidState *nfidp = lookup_fid(s, nfid);
-
if (nfidp == NULL) {
err = -errno;
v9fs_post_create(s, vs, err);
}
-
err = posix_link(s, &nfidp->path, &vs->fullname);
v9fs_create_post_perms(s, vs, err);
} else if (vs->perm & P9_STAT_MODE_DEVICE) {
@@ -1707,6 +1702,7 @@ out:
static void v9fs_create(V9fsState *s, V9fsPDU *pdu)
{
+ int32_t fid;
V9fsCreateState *vs;
int err = 0;
@@ -1716,10 +1712,10 @@ static void v9fs_create(V9fsState *s, V9fsPDU *pdu)
v9fs_string_init(&vs->fullname);
- pdu_unmarshal(vs->pdu, vs->offset, "dsdbs", &vs->fid, &vs->name,
+ pdu_unmarshal(vs->pdu, vs->offset, "dsdbs", &fid, &vs->name,
&vs->perm, &vs->mode, &vs->extension);
- vs->fidp = lookup_fid(s, vs->fid);
+ vs->fidp = lookup_fid(s, fid);
if (vs->fidp == NULL) {
err = -EINVAL;
goto out;
@@ -1749,7 +1745,6 @@ static void v9fs_flush(V9fsState *s, V9fsPDU *pdu)
typedef struct V9fsRemoveState {
V9fsPDU *pdu;
size_t offset;
- int32_t fid;
V9fsFidState *fidp;
} V9fsRemoveState;
@@ -1761,7 +1756,7 @@ static void v9fs_remove_post_remove(V9fsState *s, V9fsRemoveState *vs,
goto out;
}
- err = free_fid(s, vs->fid);
+ err = free_fid(s, vs->fidp->fid);
if (err < 0)
goto out;
@@ -1773,6 +1768,7 @@ out:
static void v9fs_remove(V9fsState *s, V9fsPDU *pdu)
{
+ int32_t fid;
V9fsRemoveState *vs;
int err = 0;
@@ -1780,9 +1776,9 @@ static void v9fs_remove(V9fsState *s, V9fsPDU *pdu)
vs->pdu = pdu;
vs->offset = 7;
- pdu_unmarshal(vs->pdu, vs->offset, "d", &vs->fid);
+ pdu_unmarshal(vs->pdu, vs->offset, "d", &fid);
- vs->fidp = lookup_fid(s, vs->fid);
+ vs->fidp = lookup_fid(s, fid);
if (vs->fidp == NULL) {
err = -EINVAL;
goto out;
@@ -1837,7 +1833,6 @@ typedef struct V9fsWstatState
{
V9fsPDU *pdu;
size_t offset;
- int32_t fid;
int16_t unused;
V9fsStat v9stat;
V9fsFidState *fidp;
@@ -2002,6 +1997,7 @@ static int donttouch_stat(V9fsStat *stat)
static void v9fs_wstat(V9fsState *s, V9fsPDU *pdu)
{
+ int32_t fid;
V9fsWstatState *vs;
int err = 0;
@@ -2009,9 +2005,9 @@ static void v9fs_wstat(V9fsState *s, V9fsPDU *pdu)
vs->pdu = pdu;
vs->offset = 7;
- pdu_unmarshal(pdu, vs->offset, "dwS", &vs->fid, &vs->unused, &vs->v9stat);
+ pdu_unmarshal(pdu, vs->offset, "dwS", &fid, &vs->unused, &vs->v9stat);
- vs->fidp = lookup_fid(s, vs->fid);
+ vs->fidp = lookup_fid(s, fid);
if (vs->fidp == NULL) {
err = -EINVAL;
goto out;