]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/md/dm-table.c
Merge branch 'serge-next-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sergeh...
[karo-tx-linux.git] / drivers / md / dm-table.c
index 6a7f2b83a1263f4c4ca6bc33b4a22fd5893bf445..50601ec7017acd3e310abedc9bb6c8ba45525344 100644 (file)
@@ -945,7 +945,7 @@ bool dm_table_request_based(struct dm_table *t)
        return dm_table_get_type(t) == DM_TYPE_REQUEST_BASED;
 }
 
-int dm_table_alloc_md_mempools(struct dm_table *t)
+static int dm_table_alloc_md_mempools(struct dm_table *t)
 {
        unsigned type = dm_table_get_type(t);
        unsigned per_bio_data_size = 0;
@@ -1618,6 +1618,25 @@ struct mapped_device *dm_table_get_md(struct dm_table *t)
 }
 EXPORT_SYMBOL(dm_table_get_md);
 
+void dm_table_run_md_queue_async(struct dm_table *t)
+{
+       struct mapped_device *md;
+       struct request_queue *queue;
+       unsigned long flags;
+
+       if (!dm_table_request_based(t))
+               return;
+
+       md = dm_table_get_md(t);
+       queue = dm_get_md_queue(md);
+       if (queue) {
+               spin_lock_irqsave(queue->queue_lock, flags);
+               blk_run_queue_async(queue);
+               spin_unlock_irqrestore(queue->queue_lock, flags);
+       }
+}
+EXPORT_SYMBOL(dm_table_run_md_queue_async);
+
 static int device_discard_capable(struct dm_target *ti, struct dm_dev *dev,
                                  sector_t start, sector_t len, void *data)
 {