summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Durgin <josh.durgin@inktank.com>2012-05-22 12:54:09 -0700
committerJosh Durgin <josh.durgin@inktank.com>2012-05-22 12:54:09 -0700
commit0ae59eae3d60dd69b097370514fbbecf42146b66 (patch)
tree41a4e341aac76db58c173537f6472ee0d1aaece6
parent884aa8a6616b03cc53e8691bfc73a48fa25db555 (diff)
parent11030793fae4226352b67b1c806beae51e88150a (diff)
downloadceph-0ae59eae3d60dd69b097370514fbbecf42146b66.tar.gz
Merge branch 'stable'
-rw-r--r--configure.ac2
-rw-r--r--debian/changelog6
-rw-r--r--src/osdc/ObjectCacher.cc62
3 files changed, 37 insertions, 33 deletions
diff --git a/configure.ac b/configure.ac
index d5e6a7ae399..f73c973fe72 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,7 +8,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.47], [ceph-devel@vger.kernel.org])
+AC_INIT([ceph], [0.47.1], [ceph-devel@vger.kernel.org])
AC_CONFIG_SUBDIRS([src/gtest])
AC_CONFIG_SUBDIRS([src/leveldb])
diff --git a/debian/changelog b/debian/changelog
index 2f34e20ce65..5c4514da80a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ceph (0.47.1-1) experimental; urgency=low
+
+ * New upstream release
+
+ -- Sage Weil <sage@newdream.net> Mon, 21 May 2012 14:28:30 -0700
+
ceph (0.47-1) experimental; urgency=low
* New upstream release
diff --git a/src/osdc/ObjectCacher.cc b/src/osdc/ObjectCacher.cc
index c9825f92205..ade79fb382f 100644
--- a/src/osdc/ObjectCacher.cc
+++ b/src/osdc/ObjectCacher.cc
@@ -1181,40 +1181,38 @@ void ObjectCacher::flusher_entry()
ldout(cct, 10) << "flusher start" << dendl;
lock.Lock();
while (!flusher_stop) {
- while (!flusher_stop) {
- loff_t all = get_stat_tx() + get_stat_rx() + get_stat_clean() + get_stat_dirty();
- ldout(cct, 11) << "flusher "
- << all << " / " << max_size << ": "
- << get_stat_tx() << " tx, "
- << get_stat_rx() << " rx, "
- << get_stat_clean() << " clean, "
- << get_stat_dirty() << " dirty ("
- << target_dirty << " target, "
- << max_dirty << " max)"
- << dendl;
- if (get_stat_dirty() + get_stat_dirty_waiting() > target_dirty) {
- // flush some dirty pages
- ldout(cct, 10) << "flusher "
- << get_stat_dirty() << " dirty + " << get_stat_dirty_waiting()
- << " dirty_waiting > target "
- << target_dirty
- << ", flushing some dirty bhs" << dendl;
- flush(get_stat_dirty() + get_stat_dirty_waiting() - target_dirty);
- }
- else {
- // check tail of lru for old dirty items
- utime_t cutoff = ceph_clock_now(cct);
- cutoff -= max_dirty_age;
- BufferHead *bh = 0;
- while ((bh = (BufferHead*)lru_dirty.lru_get_next_expire()) != 0 &&
- bh->last_write < cutoff) {
- ldout(cct, 10) << "flusher flushing aged dirty bh " << *bh << dendl;
- bh_write(bh);
- }
- break;
+ loff_t all = get_stat_tx() + get_stat_rx() + get_stat_clean() + get_stat_dirty();
+ ldout(cct, 11) << "flusher "
+ << all << " / " << max_size << ": "
+ << get_stat_tx() << " tx, "
+ << get_stat_rx() << " rx, "
+ << get_stat_clean() << " clean, "
+ << get_stat_dirty() << " dirty ("
+ << target_dirty << " target, "
+ << max_dirty << " max)"
+ << dendl;
+ loff_t actual = get_stat_dirty() + get_stat_dirty_waiting();
+ if (actual > target_dirty) {
+ // flush some dirty pages
+ ldout(cct, 10) << "flusher "
+ << get_stat_dirty() << " dirty + " << get_stat_dirty_waiting()
+ << " dirty_waiting > target "
+ << target_dirty
+ << ", flushing some dirty bhs" << dendl;
+ flush(actual - target_dirty);
+ } else {
+ // check tail of lru for old dirty items
+ utime_t cutoff = ceph_clock_now(cct);
+ cutoff -= max_dirty_age;
+ BufferHead *bh = 0;
+ while ((bh = (BufferHead*)lru_dirty.lru_get_next_expire()) != 0 &&
+ bh->last_write < cutoff) {
+ ldout(cct, 10) << "flusher flushing aged dirty bh " << *bh << dendl;
+ bh_write(bh);
}
}
- if (flusher_stop) break;
+ if (flusher_stop)
+ break;
flusher_cond.WaitInterval(cct, lock, utime_t(1,0));
}
lock.Unlock();