Skip to content

Commit 8ebcb2d

Browse files
committed
os/bluestore/ceph-bluestore-tool: Modify show-label for many devs
It was possible to give multiple devices to cbt: > ceph-bluestore-tool show-label --dev /dev/sda --dev /dev/sdb But is any of devices cannot provide valid label, nothing was printed. Now, always print results. Non readable labels are output as empty dictionaries. Exit code: - 0 if any label properly read - 1 if all labels failed Fixes: https://tracker.ceph.com/issues/68505 Signed-off-by: Adam Kupczyk <[email protected]>
1 parent b2a4bd8 commit 8ebcb2d

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/os/bluestore/bluestore_tool.cc

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -746,20 +746,25 @@ int main(int argc, char **argv)
746746
else if (action == "show-label") {
747747
JSONFormatter jf(true);
748748
jf.open_object_section("devices");
749+
bool any_success = false;
749750
for (auto& i : devs) {
751+
jf.open_object_section(i.c_str());
750752
bluestore_bdev_label_t label;
751753
int r = BlueStore::read_bdev_label(cct.get(), i, &label);
752754
if (r < 0) {
753-
cerr << "unable to read label for " << i << ": "
754-
<< cpp_strerror(r) << std::endl;
755-
exit(EXIT_FAILURE);
755+
cerr << "unable to read label for " << i << ": "
756+
<< cpp_strerror(r) << std::endl;
757+
} else {
758+
any_success = true;
759+
label.dump(&jf);
756760
}
757-
jf.open_object_section(i.c_str());
758-
label.dump(&jf);
759761
jf.close_section();
760762
}
761763
jf.close_section();
762764
jf.flush(cout);
765+
if (!any_success) {
766+
exit(EXIT_FAILURE);
767+
}
763768
}
764769
else if (action == "set-label-key") {
765770
bluestore_bdev_label_t label;

0 commit comments

Comments
 (0)