diff options
author | Greg Kurz | 2021-01-22 15:35:14 +0100 |
---|---|---|
committer | Greg Kurz | 2021-01-22 18:26:40 +0100 |
commit | 81f9766b7a16ccfcfd19e0b4525a5eeba862c851 (patch) | |
tree | 1f96adff93b692a8c1595345ce7094fccda1516d | |
parent | 9pfs: Improve unreclaim loop (diff) | |
download | qemu-81f9766b7a16ccfcfd19e0b4525a5eeba862c851.tar.gz qemu-81f9766b7a16ccfcfd19e0b4525a5eeba862c851.tar.xz qemu-81f9766b7a16ccfcfd19e0b4525a5eeba862c851.zip |
9pfs: Convert reclaim list to QSLIST
Use QSLIST instead of open-coding for a slightly improved readability.
No behavioral change.
Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Message-Id: <20210122143514.215780-1-groug@kaod.org>
Signed-off-by: Greg Kurz <groug@kaod.org>
-rw-r--r-- | hw/9pfs/9p.c | 17 | ||||
-rw-r--r-- | hw/9pfs/9p.h | 2 |
2 files changed, 9 insertions, 10 deletions
diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index 3864d014b4..5a6e2c9d3d 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -416,7 +416,9 @@ void coroutine_fn v9fs_reclaim_fd(V9fsPDU *pdu) { int reclaim_count = 0; V9fsState *s = pdu->s; - V9fsFidState *f, *reclaim_list = NULL; + V9fsFidState *f; + QSLIST_HEAD(, V9fsFidState) reclaim_list = + QSLIST_HEAD_INITIALIZER(reclaim_list); QSIMPLEQ_FOREACH(f, &s->fid_list, next) { /* @@ -448,8 +450,7 @@ void coroutine_fn v9fs_reclaim_fd(V9fsPDU *pdu) * a clunk request won't free this fid */ f->ref++; - f->rclm_lst = reclaim_list; - reclaim_list = f; + QSLIST_INSERT_HEAD(&reclaim_list, f, reclaim_next); f->fs_reclaim.fd = f->fs.fd; f->fs.fd = -1; reclaim_count++; @@ -461,8 +462,7 @@ void coroutine_fn v9fs_reclaim_fd(V9fsPDU *pdu) * a clunk request won't free this fid */ f->ref++; - f->rclm_lst = reclaim_list; - reclaim_list = f; + QSLIST_INSERT_HEAD(&reclaim_list, f, reclaim_next); f->fs_reclaim.dir.stream = f->fs.dir.stream; f->fs.dir.stream = NULL; reclaim_count++; @@ -476,15 +476,14 @@ void coroutine_fn v9fs_reclaim_fd(V9fsPDU *pdu) * Now close the fid in reclaim list. Free them if they * are already clunked. */ - while (reclaim_list) { - f = reclaim_list; - reclaim_list = f->rclm_lst; + while (!QSLIST_EMPTY(&reclaim_list)) { + f = QSLIST_FIRST(&reclaim_list); + QSLIST_REMOVE(&reclaim_list, f, V9fsFidState, reclaim_next); if (f->fid_type == P9_FID_FILE) { v9fs_co_close(pdu, &f->fs_reclaim); } else if (f->fid_type == P9_FID_DIR) { v9fs_co_closedir(pdu, &f->fs_reclaim); } - f->rclm_lst = NULL; /* * Now drop the fid reference, free it * if clunked. diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h index 85fb6930b0..00381591ff 100644 --- a/hw/9pfs/9p.h +++ b/hw/9pfs/9p.h @@ -281,7 +281,7 @@ struct V9fsFidState { int ref; bool clunked; QSIMPLEQ_ENTRY(V9fsFidState) next; - V9fsFidState *rclm_lst; + QSLIST_ENTRY(V9fsFidState) reclaim_next; }; typedef enum AffixType_t { |