asm-generic: make get_user() clear the destination on errors
[linux-2.6-block.git] / block / blk-mq-tag.c
index 56a0c37a3d06e0e4037c1cda55c0c6d1c6a98f21..729bac3a673b7a89577669c1a65e70fc60309d5a 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)
 {