Skip to content

Commit c31f506

Browse files
authored
Merge pull request ceph#54002 from idryomov/wip-63028
pybind/rbd: don't produce info on errors in aio_mirror_image_get_info() Reviewed-by: Mykola Golub <[email protected]> Reviewed-by: Ramana Raja <[email protected]>
2 parents a567f55 + 01fff6a commit c31f506

File tree

2 files changed

+21
-17
lines changed

2 files changed

+21
-17
lines changed

src/pybind/mgr/rbd_support/mirror_snapshot_schedule.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def get_mirror_mode(self, image_spec: ImageSpec, image: rbd.Image) -> None:
125125
self.log.debug("CreateSnapshotRequests.get_mirror_mode: {}/{}/{}".format(
126126
pool_id, namespace, image_id))
127127

128-
def cb(comp: rados.Completion, mode: int) -> None:
128+
def cb(comp: rados.Completion, mode: Optional[int]) -> None:
129129
self.handle_get_mirror_mode(image_spec, image, comp, mode)
130130

131131
try:
@@ -140,14 +140,14 @@ def handle_get_mirror_mode(self,
140140
image_spec: ImageSpec,
141141
image: rbd.Image,
142142
comp: rados.Completion,
143-
mode: int) -> None:
143+
mode: Optional[int]) -> None:
144144
pool_id, namespace, image_id = image_spec
145145

146146
self.log.debug(
147147
"CreateSnapshotRequests.handle_get_mirror_mode {}/{}/{}: r={} mode={}".format(
148148
pool_id, namespace, image_id, comp.get_return_value(), mode))
149149

150-
if comp.get_return_value() < 0:
150+
if mode is None:
151151
if comp.get_return_value() != -errno.ENOENT:
152152
self.log.error(
153153
"error when getting mirror mode for {}/{}/{}: {}".format(
@@ -171,7 +171,7 @@ def get_mirror_info(self, image_spec: ImageSpec, image: rbd.Image) -> None:
171171
self.log.debug("CreateSnapshotRequests.get_mirror_info: {}/{}/{}".format(
172172
pool_id, namespace, image_id))
173173

174-
def cb(comp: rados.Completion, info: Dict[str, Union[str, int]]) -> None:
174+
def cb(comp: rados.Completion, info: Optional[Dict[str, Union[str, int]]]) -> None:
175175
self.handle_get_mirror_info(image_spec, image, comp, info)
176176

177177
try:
@@ -186,14 +186,14 @@ def handle_get_mirror_info(self,
186186
image_spec: ImageSpec,
187187
image: rbd.Image,
188188
comp: rados.Completion,
189-
info: Dict[str, Union[str, int]]) -> None:
189+
info: Optional[Dict[str, Union[str, int]]]) -> None:
190190
pool_id, namespace, image_id = image_spec
191191

192192
self.log.debug(
193193
"CreateSnapshotRequests.handle_get_mirror_info {}/{}/{}: r={} info={}".format(
194194
pool_id, namespace, image_id, comp.get_return_value(), info))
195195

196-
if comp.get_return_value() < 0:
196+
if info is None:
197197
if comp.get_return_value() != -errno.ENOENT:
198198
self.log.error(
199199
"error when getting mirror info for {}/{}/{}: {}".format(
@@ -218,7 +218,7 @@ def create_snapshot(self, image_spec: ImageSpec, image: rbd.Image) -> None:
218218
"CreateSnapshotRequests.create_snapshot for {}/{}/{}".format(
219219
pool_id, namespace, image_id))
220220

221-
def cb(comp: rados.Completion, snap_id: int) -> None:
221+
def cb(comp: rados.Completion, snap_id: Optional[int]) -> None:
222222
self.handle_create_snapshot(image_spec, image, comp, snap_id)
223223

224224
try:
@@ -233,15 +233,14 @@ def handle_create_snapshot(self,
233233
image_spec: ImageSpec,
234234
image: rbd.Image,
235235
comp: rados.Completion,
236-
snap_id: int) -> None:
236+
snap_id: Optional[int]) -> None:
237237
pool_id, namespace, image_id = image_spec
238238

239239
self.log.debug(
240240
"CreateSnapshotRequests.handle_create_snapshot for {}/{}/{}: r={}, snap_id={}".format(
241241
pool_id, namespace, image_id, comp.get_return_value(), snap_id))
242242

243-
if comp.get_return_value() < 0 and \
244-
comp.get_return_value() != -errno.ENOENT:
243+
if snap_id is None and comp.get_return_value() != -errno.ENOENT:
245244
self.log.error(
246245
"error when creating snapshot for {}/{}/{}: {}".format(
247246
pool_id, namespace, image_id, comp.get_return_value()))

src/pybind/rbd/rbd.pyx

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4511,13 +4511,18 @@ written." % (self.name, ret, length))
45114511
def oncomplete_(completion_v):
45124512
cdef:
45134513
Completion _completion_v = completion_v
4514-
rbd_mirror_image_info_t *c_info = <rbd_mirror_image_info_t *>_completion_v.buf
4515-
info = {
4516-
'global_id' : decode_cstr(c_info[0].global_id),
4517-
'state' : int(c_info[0].state),
4518-
'primary' : c_info[0].primary,
4519-
}
4520-
rbd_mirror_image_get_info_cleanup(c_info)
4514+
rbd_mirror_image_info_t *c_info
4515+
return_value = _completion_v.get_return_value()
4516+
if return_value == 0:
4517+
c_info = <rbd_mirror_image_info_t *>_completion_v.buf
4518+
info = {
4519+
'global_id' : decode_cstr(c_info[0].global_id),
4520+
'state' : int(c_info[0].state),
4521+
'primary' : c_info[0].primary,
4522+
}
4523+
rbd_mirror_image_get_info_cleanup(c_info)
4524+
else:
4525+
info = None
45214526
return oncomplete(_completion_v, info)
45224527

45234528
completion = self.__get_completion(oncomplete_)

0 commit comments

Comments
 (0)