diff options
| -rw-r--r-- | drivers/md/dm-crypt.c | 3 | ||||
| -rw-r--r-- | drivers/md/dm-delay.c | 8 | ||||
| -rw-r--r-- | drivers/md/dm-linear.c | 3 | ||||
| -rw-r--r-- | drivers/md/dm-log.c | 3 | ||||
| -rw-r--r-- | drivers/md/dm-mpath.c | 7 | ||||
| -rw-r--r-- | drivers/md/dm-raid1.c | 3 | ||||
| -rw-r--r-- | drivers/md/dm-snap.c | 8 | ||||
| -rw-r--r-- | drivers/md/dm-stripe.c | 3 | ||||
| -rw-r--r-- | drivers/md/dm-table.c | 10 | ||||
| -rw-r--r-- | include/linux/device-mapper.h | 5 | 
10 files changed, 21 insertions, 32 deletions
| diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index a93637223c8d..3bdbb6115702 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c | |||
| @@ -1160,8 +1160,7 @@ static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
| 1160 | } | 1160 | } | 
| 1161 | cc->start = tmpll; | 1161 | cc->start = tmpll; | 
| 1162 | 1162 | ||
| 1163 | if (dm_get_device(ti, argv[3], cc->start, ti->len, | 1163 | if (dm_get_device(ti, argv[3], dm_table_get_mode(ti->table), &cc->dev)) { | 
| 1164 | dm_table_get_mode(ti->table), &cc->dev)) { | ||
| 1165 | ti->error = "Device lookup failed"; | 1164 | ti->error = "Device lookup failed"; | 
| 1166 | goto bad_device; | 1165 | goto bad_device; | 
| 1167 | } | 1166 | } | 
| diff --git a/drivers/md/dm-delay.c b/drivers/md/dm-delay.c index ebe7381f47c8..852052880d7a 100644 --- a/drivers/md/dm-delay.c +++ b/drivers/md/dm-delay.c | |||
| @@ -156,8 +156,8 @@ static int delay_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
| 156 | goto bad; | 156 | goto bad; | 
| 157 | } | 157 | } | 
| 158 | 158 | ||
| 159 | if (dm_get_device(ti, argv[0], dc->start_read, ti->len, | 159 | if (dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), | 
| 160 | dm_table_get_mode(ti->table), &dc->dev_read)) { | 160 | &dc->dev_read)) { | 
| 161 | ti->error = "Device lookup failed"; | 161 | ti->error = "Device lookup failed"; | 
| 162 | goto bad; | 162 | goto bad; | 
| 163 | } | 163 | } | 
| @@ -177,8 +177,8 @@ static int delay_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
| 177 | goto bad_dev_read; | 177 | goto bad_dev_read; | 
| 178 | } | 178 | } | 
| 179 | 179 | ||
| 180 | if (dm_get_device(ti, argv[3], dc->start_write, ti->len, | 180 | if (dm_get_device(ti, argv[3], dm_table_get_mode(ti->table), | 
| 181 | dm_table_get_mode(ti->table), &dc->dev_write)) { | 181 | &dc->dev_write)) { | 
| 182 | ti->error = "Write device lookup failed"; | 182 | ti->error = "Write device lookup failed"; | 
| 183 | goto bad_dev_read; | 183 | goto bad_dev_read; | 
| 184 | } | 184 | } | 
| diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c index 82f7d6e6b1ea..9200dbf2391a 100644 --- a/drivers/md/dm-linear.c +++ b/drivers/md/dm-linear.c | |||
| @@ -47,8 +47,7 @@ static int linear_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
| 47 | } | 47 | } | 
| 48 | lc->start = tmp; | 48 | lc->start = tmp; | 
| 49 | 49 | ||
| 50 | if (dm_get_device(ti, argv[0], lc->start, ti->len, | 50 | if (dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), &lc->dev)) { | 
| 51 | dm_table_get_mode(ti->table), &lc->dev)) { | ||
| 52 | ti->error = "dm-linear: Device lookup failed"; | 51 | ti->error = "dm-linear: Device lookup failed"; | 
| 53 | goto bad; | 52 | goto bad; | 
| 54 | } | 53 | } | 
| diff --git a/drivers/md/dm-log.c b/drivers/md/dm-log.c index 7035582786fb..5a08be0222db 100644 --- a/drivers/md/dm-log.c +++ b/drivers/md/dm-log.c | |||
| @@ -543,8 +543,7 @@ static int disk_ctr(struct dm_dirty_log *log, struct dm_target *ti, | |||
| 543 | return -EINVAL; | 543 | return -EINVAL; | 
| 544 | } | 544 | } | 
| 545 | 545 | ||
| 546 | r = dm_get_device(ti, argv[0], 0, 0 /* FIXME */, | 546 | r = dm_get_device(ti, argv[0], FMODE_READ | FMODE_WRITE, &dev); | 
| 547 | FMODE_READ | FMODE_WRITE, &dev); | ||
| 548 | if (r) | 547 | if (r) | 
| 549 | return r; | 548 | return r; | 
| 550 | 549 | ||
| diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c index c1335487cc72..826bce7343b3 100644 --- a/drivers/md/dm-mpath.c +++ b/drivers/md/dm-mpath.c | |||
| @@ -607,8 +607,8 @@ static struct pgpath *parse_path(struct arg_set *as, struct path_selector *ps, | |||
| 607 | if (!p) | 607 | if (!p) | 
| 608 | return ERR_PTR(-ENOMEM); | 608 | return ERR_PTR(-ENOMEM); | 
| 609 | 609 | ||
| 610 | r = dm_get_device(ti, shift(as), ti->begin, ti->len, | 610 | r = dm_get_device(ti, shift(as), dm_table_get_mode(ti->table), | 
| 611 | dm_table_get_mode(ti->table), &p->path.dev); | 611 | &p->path.dev); | 
| 612 | if (r) { | 612 | if (r) { | 
| 613 | ti->error = "error getting device"; | 613 | ti->error = "error getting device"; | 
| 614 | goto bad; | 614 | goto bad; | 
| @@ -1505,8 +1505,7 @@ static int multipath_message(struct dm_target *ti, unsigned argc, char **argv) | |||
| 1505 | goto out; | 1505 | goto out; | 
| 1506 | } | 1506 | } | 
| 1507 | 1507 | ||
| 1508 | r = dm_get_device(ti, argv[1], ti->begin, ti->len, | 1508 | r = dm_get_device(ti, argv[1], dm_table_get_mode(ti->table), &dev); | 
| 1509 | dm_table_get_mode(ti->table), &dev); | ||
| 1510 | if (r) { | 1509 | if (r) { | 
| 1511 | DMWARN("message: error getting device %s", | 1510 | DMWARN("message: error getting device %s", | 
| 1512 | argv[1]); | 1511 | argv[1]); | 
| diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index de26fde4098f..6d66ddf39071 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c | |||
| @@ -920,8 +920,7 @@ static int get_mirror(struct mirror_set *ms, struct dm_target *ti, | |||
| 920 | return -EINVAL; | 920 | return -EINVAL; | 
| 921 | } | 921 | } | 
| 922 | 922 | ||
| 923 | if (dm_get_device(ti, argv[0], offset, ti->len, | 923 | if (dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), | 
| 924 | dm_table_get_mode(ti->table), | ||
| 925 | &ms->mirror[mirror].dev)) { | 924 | &ms->mirror[mirror].dev)) { | 
| 926 | ti->error = "Device lookup failure"; | 925 | ti->error = "Device lookup failure"; | 
| 927 | return -ENXIO; | 926 | return -ENXIO; | 
| diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c index ee8eb283650d..0789c22ff0d4 100644 --- a/drivers/md/dm-snap.c +++ b/drivers/md/dm-snap.c | |||
| @@ -1081,8 +1081,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
| 1081 | argv++; | 1081 | argv++; | 
| 1082 | argc--; | 1082 | argc--; | 
| 1083 | 1083 | ||
| 1084 | r = dm_get_device(ti, cow_path, 0, 0, | 1084 | r = dm_get_device(ti, cow_path, FMODE_READ | FMODE_WRITE, &s->cow); | 
| 1085 | FMODE_READ | FMODE_WRITE, &s->cow); | ||
| 1086 | if (r) { | 1085 | if (r) { | 
| 1087 | ti->error = "Cannot get COW device"; | 1086 | ti->error = "Cannot get COW device"; | 
| 1088 | goto bad_cow; | 1087 | goto bad_cow; | 
| @@ -1098,7 +1097,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
| 1098 | argv += args_used; | 1097 | argv += args_used; | 
| 1099 | argc -= args_used; | 1098 | argc -= args_used; | 
| 1100 | 1099 | ||
| 1101 | r = dm_get_device(ti, origin_path, 0, ti->len, origin_mode, &s->origin); | 1100 | r = dm_get_device(ti, origin_path, origin_mode, &s->origin); | 
| 1102 | if (r) { | 1101 | if (r) { | 
| 1103 | ti->error = "Cannot get origin device"; | 1102 | ti->error = "Cannot get origin device"; | 
| 1104 | goto bad_origin; | 1103 | goto bad_origin; | 
| @@ -2100,8 +2099,7 @@ static int origin_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
| 2100 | return -EINVAL; | 2099 | return -EINVAL; | 
| 2101 | } | 2100 | } | 
| 2102 | 2101 | ||
| 2103 | r = dm_get_device(ti, argv[0], 0, ti->len, | 2102 | r = dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), &dev); | 
| 2104 | dm_table_get_mode(ti->table), &dev); | ||
| 2105 | if (r) { | 2103 | if (r) { | 
| 2106 | ti->error = "Cannot get target device"; | 2104 | ti->error = "Cannot get target device"; | 
| 2107 | return r; | 2105 | return r; | 
| diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c index bd58703ee8f6..e610725db766 100644 --- a/drivers/md/dm-stripe.c +++ b/drivers/md/dm-stripe.c | |||
| @@ -80,8 +80,7 @@ static int get_stripe(struct dm_target *ti, struct stripe_c *sc, | |||
| 80 | if (sscanf(argv[1], "%llu", &start) != 1) | 80 | if (sscanf(argv[1], "%llu", &start) != 1) | 
| 81 | return -EINVAL; | 81 | return -EINVAL; | 
| 82 | 82 | ||
| 83 | if (dm_get_device(ti, argv[0], start, sc->stripe_width, | 83 | if (dm_get_device(ti, argv[0], dm_table_get_mode(ti->table), | 
| 84 | dm_table_get_mode(ti->table), | ||
| 85 | &sc->stripe[stripe].dev)) | 84 | &sc->stripe[stripe].dev)) | 
| 86 | return -ENXIO; | 85 | return -ENXIO; | 
| 87 | 86 | ||
| diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c index 7d70cca585ac..9924ea23032d 100644 --- a/drivers/md/dm-table.c +++ b/drivers/md/dm-table.c | |||
| @@ -429,8 +429,7 @@ static int upgrade_mode(struct dm_dev_internal *dd, fmode_t new_mode, | |||
| 429 | * it's already present. | 429 | * it's already present. | 
| 430 | */ | 430 | */ | 
| 431 | static int __table_get_device(struct dm_table *t, struct dm_target *ti, | 431 | static int __table_get_device(struct dm_table *t, struct dm_target *ti, | 
| 432 | const char *path, sector_t start, sector_t len, | 432 | const char *path, fmode_t mode, struct dm_dev **result) | 
| 433 | fmode_t mode, struct dm_dev **result) | ||
| 434 | { | 433 | { | 
| 435 | int r; | 434 | int r; | 
| 436 | dev_t uninitialized_var(dev); | 435 | dev_t uninitialized_var(dev); | 
| @@ -527,11 +526,10 @@ int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev, | |||
| 527 | } | 526 | } | 
| 528 | EXPORT_SYMBOL_GPL(dm_set_device_limits); | 527 | EXPORT_SYMBOL_GPL(dm_set_device_limits); | 
| 529 | 528 | ||
| 530 | int dm_get_device(struct dm_target *ti, const char *path, sector_t start, | 529 | int dm_get_device(struct dm_target *ti, const char *path, fmode_t mode, | 
| 531 | sector_t len, fmode_t mode, struct dm_dev **result) | 530 | struct dm_dev **result) | 
| 532 | { | 531 | { | 
| 533 | return __table_get_device(ti->table, ti, path, | 532 | return __table_get_device(ti->table, ti, path, mode, result); | 
| 534 | start, len, mode, result); | ||
| 535 | } | 533 | } | 
| 536 | 534 | ||
| 537 | 535 | ||
| diff --git a/include/linux/device-mapper.h b/include/linux/device-mapper.h index d4c9c0b88adc..1381cd97b4ed 100644 --- a/include/linux/device-mapper.h +++ b/include/linux/device-mapper.h | |||
| @@ -118,10 +118,9 @@ struct dm_dev { | |||
| 118 | /* | 118 | /* | 
| 119 | * Constructors should call these functions to ensure destination devices | 119 | * Constructors should call these functions to ensure destination devices | 
| 120 | * are opened/closed correctly. | 120 | * are opened/closed correctly. | 
| 121 | * FIXME: too many arguments. | ||
| 122 | */ | 121 | */ | 
| 123 | int dm_get_device(struct dm_target *ti, const char *path, sector_t start, | 122 | int dm_get_device(struct dm_target *ti, const char *path, fmode_t mode, | 
| 124 | sector_t len, fmode_t mode, struct dm_dev **result); | 123 | struct dm_dev **result); | 
| 125 | void dm_put_device(struct dm_target *ti, struct dm_dev *d); | 124 | void dm_put_device(struct dm_target *ti, struct dm_dev *d); | 
| 126 | 125 | ||
| 127 | /* | 126 | /* | 
