]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/osd: return ENOENT from EC getxattr for non-existent objects 69451/head
authorRonen Friedman <rfriedma@redhat.com>
Thu, 11 Jun 2026 12:32:34 +0000 (12:32 +0000)
committerRonen Friedman <rfriedma@redhat.com>
Wed, 24 Jun 2026 15:55:39 +0000 (15:55 +0000)
commite9bf02b72b047d2c8c9ec7ff611fdec96b7cc995
tree63f510071fad2c8ea2b4605af609a06279031eb1
parentf586ee7b7e202a71d9d829ea35939dd68f921dae
crimson/osd: return ENOENT from EC getxattr for non-existent objects

PGBackend::getxattr() for EC pools reads from the attr_cache and
returns ENODATA when an attr is not found, without distinguishing
between "object exists but attr not set" and "object doesn't exist".
This causes cls methods like cls_refcount_get() to proceed as if the
object exists, enter the EC RMW pipeline, and hang.

Add an os.exists check in the EC path so non-existent objects return
ENOENT, matching the behavior of the replicated path which goes to
the object store and gets ENOENT directly.

Fixes: https://tracker.ceph.com/issues/77335
Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
src/crimson/osd/pg_backend.cc