Inside sched_scrub() we call _lookup_lock_pg(), which takes
map_lock.get_read(). That's technically okay because RWLock read side is
recursive, but lockdep doesn't know that, and we don't need map_lock
because we hold osd_lock.
Signed-off-by: Sage Weil <sage@newdream.net>
// periodically kick recovery work queue
recovery_tp.kick();
- map_lock.get_read();
-
if (scrub_should_schedule()) {
sched_scrub();
}
+ map_lock.get_read();
+
heartbeat_lock.Lock();
heartbeat_check();
heartbeat_lock.Unlock();