]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
tools/ceph_objectstore_tool: action_on_all_objects_in_pg to skip pgmeta 54693/head
authorMatan Breizman <mbreizma@redhat.com>
Sun, 26 Nov 2023 14:02:41 +0000 (14:02 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Tue, 28 Nov 2023 14:38:05 +0000 (14:38 +0000)
See "Error getting attr on" after creating an empty pool:

```
$ ceph-objectstore-tool --data-path ./dev/osd0 --op list
Error getting attr on : 2.0_head,#2:00000000::::head#, (61) No data available
["2.0",{"oid":"","key":"","snapid":-2,"hash":0,"max":0,"pool":2,"namespace":"","max":0}]
```

_action_on_all_objects_in_pg() should skip getting the (non-existing) attributes of pgmeta hobjects.

Note: pgmeta_oid is created at the PG's constructor and is written to disk in init_pg_ondisk()
      without any OI_ATTR.

Fixes: https://tracker.ceph.com/issues/63640
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
(cherry picked from commit 6b0a9a580f3376a5db208674a24e4599500b712f)

src/tools/ceph_objectstore_tool.cc

index 01c8722b405a18c03bd5b532b3756e2181f40913..27ac1cff929f9a4a1e5ac86d5a54b1cb337ae1ae 100644 (file)
@@ -105,7 +105,7 @@ int _action_on_all_objects_in_pg(ObjectStore *store, coll_t coll, action_on_obje
         obj != list.end();
         ++obj) {
       object_info_t oi;
-      if (coll != coll_t::meta()) {
+      if (coll != coll_t::meta() && !obj->is_pgmeta()) {
         bufferlist attr;
         r = store->getattr(ch, *obj, OI_ATTR, attr);
         if (r < 0) {