On Wed, 21 Oct 2020 14:06:53 +0200 Christian Schoenebeck <qemu_...@crudebyte.com> wrote:
> Split out walking a directory path to a separate new utility function > do_walk() and use that function in do_mkdir(). > > The code difference saved this way is not much, but we'll use that new > do_walk() function in the upcoming patches, so it will avoid quite > some code duplication after all. > > Signed-off-by: Christian Schoenebeck <qemu_...@crudebyte.com> > --- Reviewed-by: Greg Kurz <gr...@kaod.org> > tests/qtest/virtio-9p-test.c | 27 +++++++++++++++++++-------- > 1 file changed, 19 insertions(+), 8 deletions(-) > > diff --git a/tests/qtest/virtio-9p-test.c b/tests/qtest/virtio-9p-test.c > index 2ea555fa04..21807037df 100644 > --- a/tests/qtest/virtio-9p-test.c > +++ b/tests/qtest/virtio-9p-test.c > @@ -583,6 +583,23 @@ static void do_version(QVirtio9P *v9p) > g_free(server_version); > } > > +/* utility function: walk to requested dir and return fid for that dir */ > +static uint32_t do_walk(QVirtio9P *v9p, const char *path) > +{ > + char **wnames; > + P9Req *req; > + const uint32_t fid = genfid(); > + > + int nwnames = split(path, "/", &wnames); > + > + req = v9fs_twalk(v9p, 0, fid, nwnames, wnames, 0); > + v9fs_req_wait_for_reply(req, NULL); > + v9fs_rwalk(req, NULL, NULL); > + > + split_free(&wnames); > + return fid; > +} > + > static void fs_version(void *obj, void *data, QGuestAllocator *t_alloc) > { > alloc = t_alloc; > @@ -974,23 +991,17 @@ static void fs_flush_ignored(void *obj, void *data, > QGuestAllocator *t_alloc) > > static void do_mkdir(QVirtio9P *v9p, const char *path, const char *cname) > { > - char **wnames; > char *const name = g_strdup(cname); > + uint32_t fid; > P9Req *req; > - const uint32_t fid = genfid(); > > - int nwnames = split(path, "/", &wnames); > - > - req = v9fs_twalk(v9p, 0, fid, nwnames, wnames, 0); > - v9fs_req_wait_for_reply(req, NULL); > - v9fs_rwalk(req, NULL, NULL); > + fid = do_walk(v9p, path); > > req = v9fs_tmkdir(v9p, fid, name, 0750, 0, 0); > v9fs_req_wait_for_reply(req, NULL); > v9fs_rmkdir(req, NULL); > > g_free(name); > - split_free(&wnames); > } > > static void fs_readdir_split_128(void *obj, void *data,