]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
rgw: temporarily disable calls to defer_gc() in RGWGetObj 38253/head
authorCasey Bodley <cbodley@redhat.com>
Mon, 23 Nov 2020 23:06:26 +0000 (18:06 -0500)
committerCasey Bodley <cbodley@redhat.com>
Mon, 23 Nov 2020 23:06:31 +0000 (18:06 -0500)
commit94df9cd37a1ca457130f90803281b166a5fa7eef
tree748e57123dd8bb4b6bf427c918c063cb32a84086
parentc569a302bec94855f89d3c9889d4d1ca48318a1b
rgw: temporarily disable calls to defer_gc() in RGWGetObj

cls_rgw_gc_queue_update_entry() is known to cause data loss when called
on objects that have not actually been scheduled for garbage collection

RGWGetObj is the only caller, and uses defer_gc() when reads are taking
a long time compared to rgw_gc_obj_min_wait. if an object has since been
deleted and submitted for garbage collection, this allows RGWGetObj to
defer that gc until the entire read completes

by disabling these calls to defer_gc(), very long reads (longer than 1hr,
with default configuration) may fail if the object gets deleted, and a
retry will result in a 404 Not Found error as expected

Fixes: https://tracker.ceph.com/issues/47866
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_op.cc