]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/journal: fix error returns in replay
authorSamuel Just <sjust@redhat.com>
Sat, 31 Oct 2020 00:04:32 +0000 (17:04 -0700)
committerSamuel Just <sjust@redhat.com>
Fri, 11 Dec 2020 21:31:39 +0000 (13:31 -0800)
SegmentManager is allowed to return an enoent if the segment isn't
readable.

Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/os/seastore/journal.cc

index 7fd24120c21765bdc78e9c45fb6e825af9a025f6..6626a24b00a9015e7baf0a9fa0ffa8f2f50e1719 100644 (file)
@@ -240,8 +240,14 @@ Journal::find_replay_segments_fut Journal::find_replay_segments()
            segments.emplace_back(i, std::move(header));
            return find_replay_segments_ertr::now();
          }).handle_error(
+           crimson::ct_error::enoent::handle([i](auto) {
+             logger().debug(
+               "find_replay_segments: segment {} not available for read",
+               i);
+             return find_replay_segments_ertr::now();
+           }),
            find_replay_segments_ertr::pass_further{},
-           crimson::ct_error::discard_all{}
+           crimson::ct_error::assert_all{}
          );
        }).safe_then([this, &segments]() mutable -> find_replay_segments_fut {
          logger().debug(