Mark OSDs as dirty during deletes more correctly
This commit is contained in:
@@ -780,6 +780,11 @@ resume_5:
|
|||||||
}
|
}
|
||||||
// Remove version override
|
// Remove version override
|
||||||
pg.ver_override.erase(op_data->oid);
|
pg.ver_override.erase(op_data->oid);
|
||||||
|
// Mark PG and OSDs as dirty
|
||||||
|
for (auto & chunk: (op_data->object_state ? op_data->object_state->osd_set : pg.cur_loc_set))
|
||||||
|
{
|
||||||
|
this->dirty_osds.insert(chunk.osd_num);
|
||||||
|
}
|
||||||
// Adjust PG stats after "instant stabilize", because we need object_state above
|
// Adjust PG stats after "instant stabilize", because we need object_state above
|
||||||
if (!op_data->object_state)
|
if (!op_data->object_state)
|
||||||
{
|
{
|
||||||
@@ -790,11 +795,6 @@ resume_5:
|
|||||||
remove_object_from_state(op_data->oid, &op_data->object_state, pg);
|
remove_object_from_state(op_data->oid, &op_data->object_state, pg);
|
||||||
deref_object_state(pg, &op_data->object_state, true);
|
deref_object_state(pg, &op_data->object_state, true);
|
||||||
}
|
}
|
||||||
// Mark PG and OSDs as dirty
|
|
||||||
for (auto & chunk: (op_data->object_state ? op_data->object_state->osd_set : pg.cur_loc_set))
|
|
||||||
{
|
|
||||||
this->dirty_osds.insert(chunk.osd_num);
|
|
||||||
}
|
|
||||||
for (auto cl_it = msgr.clients.find(cur_op->client_id); cl_it != msgr.clients.end(); )
|
for (auto cl_it = msgr.clients.find(cur_op->client_id); cl_it != msgr.clients.end(); )
|
||||||
{
|
{
|
||||||
cl_it->second->dirty_pgs.insert({ .pool_id = pg.pool_id, .pg_num = pg.pg_num });
|
cl_it->second->dirty_pgs.insert({ .pool_id = pg.pool_id, .pg_num = pg.pg_num });
|
||||||
|
|||||||
Reference in New Issue
Block a user