ceph/ceph — pull request #994 by yuyuyu101 (2013-12-25 03:28:40+00:00)
Title: Fix WBThrottle thread disappear problem

New ceph_osd.cc code did ObjectStore init work before global_init_daemonize(),
and WBThrottle thread is created when objectstore constructed. So after
daemon(), WBThrottle thread won't exist in new process. It will result in
deadlock.

When "cur_ios" which is member of WBThrottle hits hard limit, there exists two
ways to decrease "cur_ios". The first is WBThrottle thread which is dead if
deamonize, another is SyncThread. SyncThread will block at op_tp.pause() because
thread in op_tp(threadpool) block at wbthrottle.throttle(FileStore::_do_op). So
no thread will continue process jobs in filestore layer and all threads is
waiting.

Signed-off-by: Haomai Wang