diff options
author | Josh Durgin <josh.durgin@inktank.com> | 2012-05-22 12:54:09 -0700 |
---|---|---|
committer | Josh Durgin <josh.durgin@inktank.com> | 2012-05-22 12:54:09 -0700 |
commit | 0ae59eae3d60dd69b097370514fbbecf42146b66 (patch) | |
tree | 41a4e341aac76db58c173537f6472ee0d1aaece6 | |
parent | 884aa8a6616b03cc53e8691bfc73a48fa25db555 (diff) | |
parent | 11030793fae4226352b67b1c806beae51e88150a (diff) | |
download | ceph-0ae59eae3d60dd69b097370514fbbecf42146b66.tar.gz |
Merge branch 'stable'
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | debian/changelog | 6 | ||||
-rw-r--r-- | src/osdc/ObjectCacher.cc | 62 |
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(); |