Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3cb40214 authored by Bryn Reeves's avatar Bryn Reeves Committed by Linus Torvalds
Browse files

[PATCH] dm: extract device limit setting



Separate the setting of device I/O limits from dm_get_device().  dm-loop will
use this.

Signed-off-by: default avatarBryn Reeves <breeves@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 9faf400f
Loading
Loading
Loading
Loading
+46 −41
Original line number Diff line number Diff line
@@ -522,14 +522,9 @@ static int __table_get_device(struct dm_table *t, struct dm_target *ti,
	return 0;
}


int dm_get_device(struct dm_target *ti, const char *path, sector_t start,
		  sector_t len, int mode, struct dm_dev **result)
void dm_set_device_limits(struct dm_target *ti, struct block_device *bdev)
{
	int r = __table_get_device(ti->table, ti, path,
				   start, len, mode, result);
	if (!r) {
		request_queue_t *q = bdev_get_queue((*result)->bdev);
	request_queue_t *q = bdev_get_queue(bdev);
	struct io_restrictions *rs = &ti->limits;

	/*
@@ -572,6 +567,16 @@ int dm_get_device(struct dm_target *ti, const char *path, sector_t start,

	rs->no_cluster |= !test_bit(QUEUE_FLAG_CLUSTER, &q->queue_flags);
}
EXPORT_SYMBOL_GPL(dm_set_device_limits);

int dm_get_device(struct dm_target *ti, const char *path, sector_t start,
		  sector_t len, int mode, struct dm_dev **result)
{
	int r = __table_get_device(ti->table, ti, path,
				   start, len, mode, result);

	if (!r)
		dm_set_device_limits(ti, (*result)->bdev);

	return r;
}
+5 −0
Original line number Diff line number Diff line
@@ -71,6 +71,11 @@ typedef int (*dm_ioctl_fn) (struct dm_target *ti, struct inode *inode,

void dm_error(const char *message);

/*
 * Combine device limits.
 */
void dm_set_device_limits(struct dm_target *ti, struct block_device *bdev);

/*
 * Constructors should call these functions to ensure destination devices
 * are opened/closed correctly.