Merge branches 'misc' and 'sa1111-base' into for-linus
[cascardo/linux.git] / block / blk-mq-tag.c
index 56a0c37..729bac3 100644 (file)
@@ -485,6 +485,32 @@ void blk_mq_tagset_busy_iter(struct blk_mq_tag_set *tagset,
 }
 EXPORT_SYMBOL(blk_mq_tagset_busy_iter);
 
+int blk_mq_reinit_tagset(struct blk_mq_tag_set *set)
+{
+       int i, j, ret = 0;
+
+       if (!set->ops->reinit_request)
+               goto out;
+
+       for (i = 0; i < set->nr_hw_queues; i++) {
+               struct blk_mq_tags *tags = set->tags[i];
+
+               for (j = 0; j < tags->nr_tags; j++) {
+                       if (!tags->rqs[j])
+                               continue;
+
+                       ret = set->ops->reinit_request(set->driver_data,
+                                               tags->rqs[j]);
+                       if (ret)
+                               goto out;
+               }
+       }
+
+out:
+       return ret;
+}
+EXPORT_SYMBOL_GPL(blk_mq_reinit_tagset);
+
 void blk_mq_queue_tag_busy_iter(struct request_queue *q, busy_iter_fn *fn,
                void *priv)
 {