Project

General

Profile

Actions

Bug #24229

open

Libradosstriper successfully removes nonexistent objects instead of returning ENOENT

Added by Stan K almost 6 years ago. Updated almost 6 years ago.

Status:
Triaged
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Regression:
Yes
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Component(RADOS):
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

libradosstriper remove() call on nonexistent objects returns zero instead of ENOENT.

Tested on luminous 12.2.5-1xenial:

# rados --striper -p storage rm nonExistentObject

2018-05-22 17:02:38.791471 7fc0d6a34f80  1 librados: starting msgr at -
2018-05-22 17:02:38.791514 7fc0d6a34f80  1 librados: starting objecter
2018-05-22 17:02:38.792257 7fc0d6a34f80  1 librados: setting wanted keys
2018-05-22 17:02:38.792270 7fc0d6a34f80  1 librados: calling monclient init
2018-05-22 17:02:38.797673 7fc0d6a34f80  1 librados: init done
2018-05-22 17:02:38.797711 7fc0d6a34f80 10 librados: wait_for_osdmap waiting
2018-05-22 17:02:38.800244 7fc0d6a34f80 10 librados: wait_for_osdmap done waiting
2018-05-22 17:02:38.800783 7fc0d6a34f80 10 librados: call oid=nonExistentObject.0000000000000000 nspace=
2018-05-22 17:02:38.830822 7fc0d6a34f80 10 librados: Objecter returned from call r=0
2018-05-22 17:02:38.830908 7fc0d6a34f80 10 libradosstriper: RadosStriperImpl : Aio_remove starting for nonExistentObject
2018-05-22 17:02:38.831323 7fc0d6a34f80 10 librados: getxattr oid=nonExistentObject.0000000000000000 nspace=
2018-05-22 17:02:38.832755 7fc0d6a34f80 10 librados: Objecter returned from getxattr r=-61
2018-05-22 17:02:38.832836 7fc0d6a34f80 10 librados: stat oid=nonExistentObject.0000000000000000 nspace=
2018-05-22 17:02:38.833723 7fc0d6a34f80 10 librados: Objecter returned from stat r=0
2018-05-22 17:02:38.833780 7fc0d6a34f80 10 librados: stat oid=nonExistentObject.0000000000000001 nspace=
2018-05-22 17:02:38.837756 7fc0d6a34f80 10 librados: Objecter returned from stat r=-2
2018-05-22 17:02:38.837792 7fc0d6a34f80 10 libradosstriper: RadosStriperImpl : striper_remove_aio_req_complete called for nonExistentObject
2018-05-22 17:02:38.837825 7fc0d6a34f80 10 librados: delete oid=nonExistentObject.0000000000000000 nspace=
2018-05-22 17:02:38.861567 7fc0d6a34f80 10 librados: Objecter returned from delete r=0
2018-05-22 17:02:38.861730 7fc0d6a34f80 10 librados: watch_flush enter
2018-05-22 17:02:38.862073 7fc0d6a34f80 10 librados: watch_flush exit
2018-05-22 17:02:38.864484 7fc0d6a34f80  1 librados: shutdown

Judging from this log I can make an assumption, that new empty object is created on exclusive lock acquisition happening on line 998 of RadosStriperImpl.cc, after which it gets successfully deleted.
Unfortunately I was unable find proof of that deeper in the code.

Actions #1

Updated by Sage Weil almost 6 years ago

  • Project changed from Ceph to RADOS
  • Category deleted (libradosstriper)
  • Status changed from New to Triaged
Actions

Also available in: Atom PDF