mirror of
https://github.com/ceph/ceph
synced 2024-12-27 14:03:25 +00:00
690739e821
Maintain the prefix_itr between calls to SnapMapper::get_next_objects_to_trim() to prevent searching depleted prefixes. We got 8 distinct hash prefixes used for searching objects owned by a given PG. On each call to SnapMapper::get_next_objects_to_trim() we start from the first prefix even after all objects mapped to it were depleted. This means that we will be searching for 1 non-existing prefix after the first prefix was depleted, 2 after the first two prefixes were depleted... and so on until we will search 7 non-existing prefixes after the first 7 prefixes were depleted. This is a performance improvement PR only! It maintains the existing behavior and does not try to fix/change any of the TRIM logic. I added an extra step after the last object is trimmed doing a full scan of the DB and only if no object was found it will return ENOENT. This should make the new code no-worse than existing code which returns ENOENT after a full scan found no object. It should not impact performance in real life snaps as it should only happen once per-snap. added snap-mapper tests to rados-test-suite disabled osd_debug_trim_objects when running (SnapMapperTest, prefix_itr) to prevent asserts(as this code does illegal inserts into DELETED snaps) Code beautifing Signed-off-by: Gabriel BenHanokh <gbenhano@redhat.com> |
||
---|---|---|
.. | ||
cephadm_cases | ||
cephfs | ||
mgr | ||
tests | ||
util | ||
__init__.py | ||
admin_socket.py | ||
autotest.py | ||
aver.py | ||
backfill_toofull.py | ||
barbican.py | ||
blktrace.py | ||
boto.cfg.template | ||
cbt_performance.py | ||
cbt.py | ||
ceph_client.py | ||
ceph_deploy.py | ||
ceph_fuse.py | ||
ceph_iscsi_client.py | ||
ceph_manager.py | ||
ceph_objectstore_tool.py | ||
ceph_test_case.py | ||
ceph.conf.template | ||
ceph.py | ||
cephadm.conf | ||
cephadm.py | ||
cephfs_mirror_thrash.py | ||
cephfs_mirror.py | ||
cephfs_test_runner.py | ||
cephfs_upgrade_snap.py | ||
check_counter.py | ||
cifs_mount.py | ||
cram.py | ||
create_verify_lfn_objects.py | ||
d4ntests.py | ||
daemonwatchdog.py | ||
deduplication.py | ||
devstack.py | ||
die_on_err.py | ||
divergent_priors2.py | ||
divergent_priors.py | ||
dnsmasq.py | ||
dump_stuck.py | ||
ec_inconsistent_hinfo.py | ||
ec_lost_unfound.py | ||
exec_on_cleanup.py | ||
fs.py | ||
fwd_scrub.py | ||
immutable_object_cache_thrash.py | ||
immutable_object_cache.py | ||
kafka.py | ||
kclient.py | ||
keycloak.py | ||
keystone.py | ||
kubeadm.py | ||
locktest.py | ||
logrotate.conf | ||
lost_unfound.py | ||
manypools.py | ||
mds_creation_failure.py | ||
mds_pre_upgrade.py | ||
mds_thrash.py | ||
metadata.yaml | ||
mon_clock_skew_check.py | ||
mon_recovery.py | ||
mon_thrash.py | ||
multibench.py | ||
netem.py | ||
netsplit.py | ||
notification_tests.py | ||
nvme_loop.py | ||
object_source_down.py | ||
omapbench.py | ||
openssl_keys.py | ||
osd_backfill.py | ||
osd_failsafe_enospc.py | ||
osd_max_pg_per_osd.py | ||
osd_recovery.py | ||
peer.py | ||
peering_speed_test.py | ||
populate_rbd_pool.py | ||
pykmip.py | ||
python.py | ||
qemu.py | ||
rabbitmq.py | ||
rados.py | ||
radosbench.py | ||
radosbenchsweep.py | ||
radosgw_admin_rest.py | ||
radosgw_admin.py | ||
ragweed.py | ||
rbd_fio.py | ||
rbd_fsx.py | ||
rbd_mirror_thrash.py | ||
rbd_mirror.py | ||
rbd_pwl_cache_recovery.py | ||
rbd.py | ||
rebuild_mondb.py | ||
reg11184.py | ||
rep_lost_unfound_delete.py | ||
repair_test.py | ||
resolve_stuck_peering.py | ||
rgw_cloudtier.py | ||
rgw_logsocket.py | ||
rgw_module.py | ||
rgw_multi | ||
rgw_multisite_tests.py | ||
rgw_multisite.py | ||
rgw.py | ||
rook-ceph.conf | ||
rook.py | ||
s3a_hadoop.py | ||
s3tests_java.py | ||
s3tests.py | ||
samba.py | ||
scrub_test.py | ||
scrub.py | ||
systemd.py | ||
tempest.py | ||
teuthology_integration.py | ||
tgt.py | ||
thrash_pool_snaps.py | ||
thrasher.py | ||
thrashosds-health.yaml | ||
thrashosds.py | ||
tox.py | ||
userdata_setup.yaml | ||
userdata_teardown.yaml | ||
vault.py | ||
vip.py | ||
vstart_runner.py | ||
watch_notify_same_primary.py | ||
watch_notify_stress.py | ||
workunit.py |