ReplicatedPG: correctly handle omap key larger than max chunk

Backport: bobtail
Signed-off-by: Samuel Just <sam.just@inktank.com>
This commit is contained in:
Samuel Just 2013-01-23 12:18:31 -08:00
parent 09c71f2f5e
commit c3dec3e30a

View File

@ -5561,10 +5561,15 @@ int ReplicatedPG::send_push(int prio, int peer,
for (iter->lower_bound(progress.omap_recovered_to);
iter->valid();
iter->next()) {
if (available < (iter->key().size() + iter->value().length()))
if (!subop->omap_entries.empty() &&
available <= (iter->key().size() + iter->value().length()))
break;
subop->omap_entries.insert(make_pair(iter->key(), iter->value()));
available -= (iter->key().size() + iter->value().length());
if ((iter->key().size() + iter->value().length()) <= available)
available -= (iter->key().size() + iter->value().length());
else
available = 0;
}
if (!iter->valid())
new_progress.omap_complete = true;