diff --git a/configure.ac b/configure.ac index 552fb913a95..0b24fdd5b94 100644 --- a/configure.ac +++ b/configure.ac @@ -7,7 +7,7 @@ AC_PREREQ(2.59) # NOTE: This version is _only_ used for naming the tarball. The # VERSION define is not used by the code. It gets a version string # from 'git describe'; see src/ceph_ver.[ch] -AC_INIT([ceph], [0.28.1], [ceph-devel@vger.kernel.org]) +AC_INIT([ceph], [0.28.2], [ceph-devel@vger.kernel.org]) AC_CONFIG_SUBDIRS([src/gtest]) diff --git a/debian/changelog b/debian/changelog index 993061fa676..8e0bb03b4b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +ceph (0.28.2-1) experimental; urgency=low + + * New upstream release. + + -- Sage Weil Sat, 28 May 2011 09:14:17 -0700 + ceph (0.28.1-1) experimental; urgency=low * New upstream release. diff --git a/debian/obsync.install b/debian/obsync.install new file mode 100644 index 00000000000..35af0d2960e --- /dev/null +++ b/debian/obsync.install @@ -0,0 +1 @@ +usr/bin/obsync diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index caac74750ba..07828a83c51 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -4811,11 +4811,17 @@ void OSD::do_recovery(PG *pg) do_queries(query_map); else { dout(10) << "do_recovery no luck, giving up on this pg for now" << dendl; + recovery_wq.lock(); pg->recovery_item.remove_myself(); // sigh... + recovery_wq.unlock(); + } } - else if (started < max) + else if (started < max) { + recovery_wq.lock(); pg->recovery_item.remove_myself(); + recovery_wq.unlock(); + } pg->unlock(); } diff --git a/src/osd/PG.h b/src/osd/PG.h index d43bc73f59a..2eacd963d13 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -787,6 +787,8 @@ public: interval_set snap_trimq; + /* You should not use these items without taking their respective queue locks + * (if they have one) */ xlist::item recovery_item, backlog_item, scrub_item, scrub_finalize_item, snap_trim_item, remove_item, stat_queue_item; int recovery_ops_active; #ifdef DEBUG_RECOVERY_OIDS