diff options
Diffstat (limited to 'src/osdc')
-rw-r--r-- | src/osdc/Objecter.cc | 18 | ||||
-rw-r--r-- | src/osdc/Objecter.h | 1 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index f767641a0f7..89f99f1a927 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -1714,8 +1714,24 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m) } -void Objecter::list_objects(ListContext *list_context, Context *onfinish) { +uint32_t Objecter::list_objects_seek(ListContext *list_context, + uint32_t pos) +{ + assert(client_lock.is_locked()); + pg_t actual = osdmap->raw_pg_to_pg(pg_t(pos, list_context->pool_id)); + ldout(cct, 10) << "list_objects_seek " << list_context + << " pos " << pos << " -> " << actual << dendl; + list_context->current_pg = actual.ps(); + list_context->cookie = collection_list_handle_t(); + list_context->at_end_of_pg = false; + list_context->at_end_of_pool = false; + list_context->current_pg_epoch = 0; + return list_context->current_pg; +} +void Objecter::list_objects(ListContext *list_context, Context *onfinish) +{ + assert(client_lock.is_locked()); ldout(cct, 10) << "list_objects" << dendl; ldout(cct, 20) << " pool_id " << list_context->pool_id << " pool_snap_seq " << list_context->pool_snap_seq diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index 4e6fa77e69b..20c12d8e48d 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -1812,6 +1812,7 @@ private: } void list_objects(ListContext *p, Context *onfinish); + uint32_t list_objects_seek(ListContext *p, uint32_t pos); // ------------------------- // pool ops |