]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: lock pg in build_past_intervals_parallel()
authorSage Weil <sage@inktank.com>
Wed, 20 Feb 2013 06:20:47 +0000 (22:20 -0800)
committerSage Weil <sage@inktank.com>
Wed, 20 Feb 2013 18:22:48 +0000 (10:22 -0800)
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>
src/osd/OSD.cc

index d5f2b2299a434f311707cb1d2fab935bd84279f7..19e016f93a5c079a5afb80fdd10cd9312ec464e2 100644 (file)
@@ -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) {