aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorGreg Kurz <groug@kaod.org>2021-01-22 15:35:14 +0100
committerGreg Kurz <groug@kaod.org>2021-01-22 18:26:40 +0100
commit81f9766b7a16ccfcfd19e0b4525a5eeba862c851 (patch)
tree1f96adff93b692a8c1595345ce7094fccda1516d /hw
parent20b7f45b22c3c00dc6f8bc73a66dffb6d436aa85 (diff)
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>
Diffstat (limited to 'hw')
-rw-r--r--hw/9pfs/9p.c17
-rw-r--r--hw/9pfs/9p.h2
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 {