A question of "cond_resched_lock" called in atomic context

From: Jia-Ju Bai
Date: Sat Oct 07 2017 - 06:35:08 EST


I have seen some drivers or file systems calls "cond_resched_lock" when holding a spinlock.
An example is in fs/ocfs2/dlm/dlmdomain.c:
dlm_migrate_all_locks (acquire the spinlock)
cond_resched_lock

I find that "cond_resched_lock" has two functions: "___might_sleep" and "__cond_resched_lock".
I know that "__cond_resched_lock" is safe and okay to be called when holding a spinlock.
However, I think "___might_sleep" can be removed, because it prints error messages in this situation, but it is safe in fact.

Am I right? I am looking forward to your comments :)


Thanks,
Jia-Ju Bai