diff options
Diffstat (limited to 'drivers/md/dm-stripe.c')
| -rw-r--r-- | drivers/md/dm-stripe.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c index 4e0e5937e42a..3e563d251733 100644 --- a/drivers/md/dm-stripe.c +++ b/drivers/md/dm-stripe.c | |||
| @@ -329,9 +329,19 @@ static int stripe_iterate_devices(struct dm_target *ti, | |||
| 329 | return ret; | 329 | return ret; |
| 330 | } | 330 | } |
| 331 | 331 | ||
| 332 | static void stripe_io_hints(struct dm_target *ti, | ||
| 333 | struct queue_limits *limits) | ||
| 334 | { | ||
| 335 | struct stripe_c *sc = ti->private; | ||
| 336 | unsigned chunk_size = (sc->chunk_mask + 1) << 9; | ||
| 337 | |||
| 338 | blk_limits_io_min(limits, chunk_size); | ||
| 339 | limits->io_opt = chunk_size * sc->stripes; | ||
| 340 | } | ||
| 341 | |||
| 332 | static struct target_type stripe_target = { | 342 | static struct target_type stripe_target = { |
| 333 | .name = "striped", | 343 | .name = "striped", |
| 334 | .version = {1, 2, 0}, | 344 | .version = {1, 3, 0}, |
| 335 | .module = THIS_MODULE, | 345 | .module = THIS_MODULE, |
| 336 | .ctr = stripe_ctr, | 346 | .ctr = stripe_ctr, |
| 337 | .dtr = stripe_dtr, | 347 | .dtr = stripe_dtr, |
| @@ -339,6 +349,7 @@ static struct target_type stripe_target = { | |||
| 339 | .end_io = stripe_end_io, | 349 | .end_io = stripe_end_io, |
| 340 | .status = stripe_status, | 350 | .status = stripe_status, |
| 341 | .iterate_devices = stripe_iterate_devices, | 351 | .iterate_devices = stripe_iterate_devices, |
| 352 | .io_hints = stripe_io_hints, | ||
| 342 | }; | 353 | }; |
| 343 | 354 | ||
| 344 | int __init dm_stripe_init(void) | 355 | int __init dm_stripe_init(void) |
