It is safe to use a mutex in mq_residency() at this point since it is
only called from ioctl context.  But future-proof mq_residency() by
using might_sleep() to catch new contexts that cannot sleep.
Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
 
 static dm_cblock_t mq_residency(struct dm_cache_policy *p)
 {
+       dm_cblock_t r;
        struct mq_policy *mq = to_mq_policy(p);
 
-       /* FIXME: lock mutex, not sure we can block here */
-       return to_cblock(mq->nr_cblocks_allocated);
+       mutex_lock(&mq->lock);
+       r = to_cblock(mq->nr_cblocks_allocated);
+       mutex_unlock(&mq->lock);
+
+       return r;
 }
 
 static void mq_tick(struct dm_cache_policy *p)