From f2c70ed3c374fcb80806fe7920a13995778c5d43 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 3 Dec 2008 14:51:26 -0800 Subject: [PATCH] osd: make pg refcounting vs work queues constent Either refcount items in queue, or don't. --- src/osd/OSD.h | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 152caaa4d8472..9e7359ef9b4db 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -472,7 +472,10 @@ private: return false; } void _dequeue(PG *pg) { - pg->recovery_item.remove_myself(); + if (pg->recovery_item.get_xlist()) { + pg->recovery_item.remove_myself(); + pg->put(); + } } PG * _dequeue() { if (osd->recovery_queue.empty()) @@ -553,11 +556,7 @@ private: pg->snap_trimmer(); } void _clear() { - while (!osd->snap_trim_queue.empty()) { - PG *pg = osd->snap_trim_queue.front(); - osd->snap_trim_queue.pop_front(); - pg->put(); - } + osd->snap_trim_queue.clear(); } } snap_trim_wq; @@ -589,11 +588,7 @@ private: pg->scrub(); } void _clear() { - while (!osd->scrub_queue.empty()) { - PG *pg = osd->scrub_queue.front(); - osd->scrub_queue.pop_front(); - pg->put(); - } + osd->scrub_queue.clear(); } } scrub_wq; -- 2.39.5