blk-rq-qos: move rq_qos_add and rq_qos_del out of line
[linux-2.6-microblaze.git] / block / blk-rq-qos.h
index 1ef1f7d..805eee8 100644 (file)
@@ -85,65 +85,8 @@ static inline void rq_wait_init(struct rq_wait *rq_wait)
        init_waitqueue_head(&rq_wait->wait);
 }
 
-static inline int rq_qos_add(struct request_queue *q, struct rq_qos *rqos)
-{
-       /*
-        * No IO can be in-flight when adding rqos, so freeze queue, which
-        * is fine since we only support rq_qos for blk-mq queue.
-        *
-        * Reuse ->queue_lock for protecting against other concurrent
-        * rq_qos adding/deleting
-        */
-       blk_mq_freeze_queue(q);
-
-       spin_lock_irq(&q->queue_lock);
-       if (rq_qos_id(q, rqos->id))
-               goto ebusy;
-       rqos->next = q->rq_qos;
-       q->rq_qos = rqos;
-       spin_unlock_irq(&q->queue_lock);
-
-       blk_mq_unfreeze_queue(q);
-
-       if (rqos->ops->debugfs_attrs) {
-               mutex_lock(&q->debugfs_mutex);
-               blk_mq_debugfs_register_rqos(rqos);
-               mutex_unlock(&q->debugfs_mutex);
-       }
-
-       return 0;
-ebusy:
-       spin_unlock_irq(&q->queue_lock);
-       blk_mq_unfreeze_queue(q);
-       return -EBUSY;
-
-}
-
-static inline void rq_qos_del(struct request_queue *q, struct rq_qos *rqos)
-{
-       struct rq_qos **cur;
-
-       /*
-        * See comment in rq_qos_add() about freezing queue & using
-        * ->queue_lock.
-        */
-       blk_mq_freeze_queue(q);
-
-       spin_lock_irq(&q->queue_lock);
-       for (cur = &q->rq_qos; *cur; cur = &(*cur)->next) {
-               if (*cur == rqos) {
-                       *cur = rqos->next;
-                       break;
-               }
-       }
-       spin_unlock_irq(&q->queue_lock);
-
-       blk_mq_unfreeze_queue(q);
-
-       mutex_lock(&q->debugfs_mutex);
-       blk_mq_debugfs_unregister_rqos(rqos);
-       mutex_unlock(&q->debugfs_mutex);
-}
+int rq_qos_add(struct request_queue *q, struct rq_qos *rqos);
+void rq_qos_del(struct request_queue *q, struct rq_qos *rqos);
 
 typedef bool (acquire_inflight_cb_t)(struct rq_wait *rqw, void *private_data);
 typedef void (cleanup_cb_t)(struct rq_wait *rqw, void *private_data);