diff options
author | Sage Weil <sage@inktank.com> | 2013-02-19 22:20:47 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-02-20 10:22:48 -0800 |
commit | 2e1b02bf0117995932dc5723c70ddec628d375c2 (patch) | |
tree | c6c681e8d80d9286c53858fb095e9de002a52c3f | |
parent | db99fb4417b87301a69cb37b00c35c838b77197e (diff) | |
download | ceph-2e1b02bf0117995932dc5723c70ddec628d375c2.tar.gz |
osd: lock pg in build_past_intervals_parallel()
Methods called by write_if_dirty() (get_osdmap()) assert that the pg
is locked.
Backport: bobtail
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Samuel Just <sam.just@inktank.com>
-rw-r--r-- | src/osd/OSD.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index d5f2b2299a4..19e016f93a5 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1743,9 +1743,11 @@ void OSD::build_past_intervals_parallel() int num = 0; for (map<PG*,pistate>::iterator i = pis.begin(); i != pis.end(); ++i) { PG *pg = i->first; + pg->lock(); pg->dirty_big_info = true; pg->dirty_info = true; pg->write_if_dirty(t); + pg->unlock(); // don't let the transaction get too big if (++num >= g_conf->osd_target_transaction_size) { |