object_info_t &coi = obc->obs.oi;
set<snapid_t> old_snaps(coi.snaps.begin(), coi.snaps.end());
- assert(old_snaps.size());
+ if (old_snaps.empty()) {
+ osd->clog->error() << __func__ << " No object info snaps for " << coid << "\n";
+ return NULL;
+ }
SnapSet& snapset = obc->ssc->snapset;
dout(10) << coid << " old_snaps " << old_snaps
<< " old snapset " << snapset << dendl;
- assert(snapset.seq);
+ if (snapset.seq == 0) {
+ osd->clog->error() << __func__ << " No snapset.seq for " << coid << "\n";
+ return NULL;
+ }
RepGather *repop = simple_repop_create(obc);
OpContext *ctx = repop->ctx;
for (p = snapset.clones.begin(); p != snapset.clones.end(); ++p)
if (*p == last)
break;
- assert(p != snapset.clones.end());
+ if (p == snapset.clones.end()) {
+ osd->clog->error() << __func__ << " Snap " << coid.snap << " not in clones" << "\n";
+ return NULL;
+ }
+
ctx->delta_stats.num_bytes -= snapset.get_clone_bytes(last);
if (p != snapset.clones.begin()) {
./ceph pg scrub 1.0
timeout 30 ./ceph -w
-./stop.sh
+for i in `seq 1 7`
+do
+ ./rados -p test rmsnap snap$i
+done
+
+sleep 10
ERRORS=0
+if ! killall ceph-osd
+then
+ echo "OSD crash occurred"
+ ERRORS=$(expr $ERRORS + 1)
+fi
+
+./stop.sh
+
declare -a err_strings
err_strings[0]="log_channel[(]cluster[)] log [[]ERR[]] : scrub 1.0 1/2acecc8b/obj10/1 is missing in clone_overlap"
err_strings[1]="log_channel[(]cluster[)] log [[]ERR[]] : scrub 1.0 1/666934a3/obj5/7 no '_' attr"