hw/9pfs: avoid 'path' copy in v9fs_walk()
The v9fs_walk() function resolves all client submitted path nodes to the local 'pathes' array. Using a separate string scalar variable 'path' inside the background worker thread loop and copying that local 'path' string scalar variable subsequently to the 'pathes' array (at the end of each loop iteration) is not necessary. Instead simply resolve each path directly to the 'pathes' array and don't use the string scalar variable 'path' inside the fs worker thread loop at all. The only advantage of the 'path' scalar was that in case of an error the respective 'pathes' element would not be filled. Right now this is not an issue as the v9fs_walk() function returns as soon as any error occurs. Suggested-by: Greg Kurz <groug@kaod.org> Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com> Reviewed-by: Greg Kurz <groug@kaod.org> Message-Id: <7dacbecf25b2c9b4a0ce12d689a8a535f09a31e3.1629208359.git.qemu_oss@crudebyte.com>
This commit is contained in:
parent
59a89510b6
commit
97b1d8fdf6
@ -1787,7 +1787,8 @@ static void coroutine_fn v9fs_walk(void *opaque)
|
|||||||
strcmp("..", wnames[name_idx].data))
|
strcmp("..", wnames[name_idx].data))
|
||||||
{
|
{
|
||||||
err = s->ops->name_to_path(&s->ctx, &dpath,
|
err = s->ops->name_to_path(&s->ctx, &dpath,
|
||||||
wnames[name_idx].data, &path);
|
wnames[name_idx].data,
|
||||||
|
&pathes[name_idx]);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
err = -errno;
|
err = -errno;
|
||||||
break;
|
break;
|
||||||
@ -1796,14 +1797,13 @@ static void coroutine_fn v9fs_walk(void *opaque)
|
|||||||
err = -EINTR;
|
err = -EINTR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
err = s->ops->lstat(&s->ctx, &path, &stbuf);
|
err = s->ops->lstat(&s->ctx, &pathes[name_idx], &stbuf);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
err = -errno;
|
err = -errno;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
stbufs[name_idx] = stbuf;
|
stbufs[name_idx] = stbuf;
|
||||||
v9fs_path_copy(&dpath, &path);
|
v9fs_path_copy(&dpath, &pathes[name_idx]);
|
||||||
v9fs_path_copy(&pathes[name_idx], &path);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user