@@ -1137,46 +1137,10 @@ void PG::update_snap_map(
11371137 const vector<pg_log_entry_t > &log_entries,
11381138 ObjectStore::Transaction &t)
11391139{
1140- for (auto i = log_entries. cbegin (); i != log_entries. cend (); ++i ) {
1140+ for (const auto & entry : log_entries) {
11411141 OSDriver::OSTransaction _t (osdriver.get_transaction (&t));
1142- if (i->soid .snap < CEPH_MAXSNAP) {
1143- if (i->is_delete ()) {
1144- int r = snap_mapper.remove_oid (
1145- i->soid ,
1146- &_t);
1147- if (r)
1148- derr << __func__ << " remove_oid " << i->soid << " failed with " << r << dendl;
1149- // On removal tolerate missing key corruption
1150- ceph_assert (r == 0 || r == -ENOENT);
1151- } else if (i->is_update ()) {
1152- ceph_assert (i->snaps .length () > 0 );
1153- vector<snapid_t > snaps;
1154- bufferlist snapbl = i->snaps ;
1155- auto p = snapbl.cbegin ();
1156- try {
1157- decode (snaps, p);
1158- } catch (...) {
1159- derr << __func__ << " decode snaps failure on " << *i << dendl;
1160- snaps.clear ();
1161- }
1162- set<snapid_t > _snaps (snaps.begin (), snaps.end ());
1163-
1164- if (i->is_clone () || i->is_promote ()) {
1165- snap_mapper.add_oid (
1166- i->soid ,
1167- _snaps,
1168- &_t);
1169- } else if (i->is_modify ()) {
1170- int r = snap_mapper.update_snaps (
1171- i->soid ,
1172- _snaps,
1173- 0 ,
1174- &_t);
1175- ceph_assert (r == 0 );
1176- } else {
1177- ceph_assert (i->is_clean ());
1178- }
1179- }
1142+ if (entry.soid .snap < CEPH_MAXSNAP) {
1143+ snap_mapper.update_snap_map (entry, &_t);
11801144 }
11811145 }
11821146}
0 commit comments