From bb5f1d2c07f61f4f68ac56bba152491ecd12efa1 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Thu, 13 Jan 2011 20:00:02 +0000 Subject: [PATCH] --- yaml --- r: 230690 b: refs/heads/master c: 99d03c141b40914b67d63c9d23b8da4386422ed7 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/md/dm-table.c | 5 +++++ trunk/include/linux/device-mapper.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 5cf13b186222..24110d602d4f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9d357b0787bb3c91835d5e658c3bda178f9ca419 +refs/heads/master: 99d03c141b40914b67d63c9d23b8da4386422ed7 diff --git a/trunk/drivers/md/dm-table.c b/trunk/drivers/md/dm-table.c index 7e2ec3c05550..dffa0ac7c4f0 100644 --- a/trunk/drivers/md/dm-table.c +++ b/trunk/drivers/md/dm-table.c @@ -1278,6 +1278,7 @@ void dm_table_unplug_all(struct dm_table *t) { struct dm_dev_internal *dd; struct list_head *devices = dm_table_get_devices(t); + struct dm_target_callbacks *cb; list_for_each_entry(dd, devices, list) { struct request_queue *q = bdev_get_queue(dd->dm_dev.bdev); @@ -1290,6 +1291,10 @@ void dm_table_unplug_all(struct dm_table *t) dm_device_name(t->md), bdevname(dd->dm_dev.bdev, b)); } + + list_for_each_entry(cb, &t->target_callbacks, list) + if (cb->unplug_fn) + cb->unplug_fn(cb); } struct mapped_device *dm_table_get_md(struct dm_table *t) diff --git a/trunk/include/linux/device-mapper.h b/trunk/include/linux/device-mapper.h index 4b1c63d478ab..272496d1fae4 100644 --- a/trunk/include/linux/device-mapper.h +++ b/trunk/include/linux/device-mapper.h @@ -197,6 +197,7 @@ struct dm_target { struct dm_target_callbacks { struct list_head list; int (*congested_fn) (struct dm_target_callbacks *, int); + void (*unplug_fn)(struct dm_target_callbacks *); }; int dm_register_target(struct target_type *t);