diff options
author | Mike Snitzer <snitzer@redhat.com> | 2013-09-12 18:06:12 -0400 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2013-09-23 10:42:24 -0400 |
commit | f47908269fb53d522a956b78612a0037f5faf8e7 (patch) | |
tree | 47723023a5389daa5cdd974d4b53c3d91198be6e /drivers/md/dm-mpath.c | |
parent | 6cfa58573f9b4a543005baa002e137820504c7af (diff) |
dm: add reserved_rq_based_ios module parameter
Allow user to change the number of IOs that are reserved by
request-based DM's mempools by writing to this file:
/sys/module/dm_mod/parameters/reserved_rq_based_ios
The default value is RESERVED_REQUEST_BASED_IOS (256). The maximum
allowed value is RESERVED_MAX_IOS (1024).
Export dm_get_reserved_rq_based_ios() for use by DM targets and core
code. Switch to sizing dm-mpath's mempool using DM core's configurable
'reserved_rq_based_ios'.
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Frank Mayhar <fmayhar@google.com>
Acked-by: Mikulas Patocka <mpatocka@redhat.com>
Diffstat (limited to 'drivers/md/dm-mpath.c')
-rw-r--r-- | drivers/md/dm-mpath.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c index e08be94959fd..de570a558764 100644 --- a/drivers/md/dm-mpath.c +++ b/drivers/md/dm-mpath.c | |||
@@ -7,6 +7,7 @@ | |||
7 | 7 | ||
8 | #include <linux/device-mapper.h> | 8 | #include <linux/device-mapper.h> |
9 | 9 | ||
10 | #include "dm.h" | ||
10 | #include "dm-path-selector.h" | 11 | #include "dm-path-selector.h" |
11 | #include "dm-uevent.h" | 12 | #include "dm-uevent.h" |
12 | 13 | ||
@@ -116,8 +117,6 @@ struct dm_mpath_io { | |||
116 | 117 | ||
117 | typedef int (*action_fn) (struct pgpath *pgpath); | 118 | typedef int (*action_fn) (struct pgpath *pgpath); |
118 | 119 | ||
119 | #define MIN_IOS 256 /* Mempool size */ | ||
120 | |||
121 | static struct kmem_cache *_mpio_cache; | 120 | static struct kmem_cache *_mpio_cache; |
122 | 121 | ||
123 | static struct workqueue_struct *kmultipathd, *kmpath_handlerd; | 122 | static struct workqueue_struct *kmultipathd, *kmpath_handlerd; |
@@ -190,6 +189,7 @@ static void free_priority_group(struct priority_group *pg, | |||
190 | static struct multipath *alloc_multipath(struct dm_target *ti) | 189 | static struct multipath *alloc_multipath(struct dm_target *ti) |
191 | { | 190 | { |
192 | struct multipath *m; | 191 | struct multipath *m; |
192 | unsigned min_ios = dm_get_reserved_rq_based_ios(); | ||
193 | 193 | ||
194 | m = kzalloc(sizeof(*m), GFP_KERNEL); | 194 | m = kzalloc(sizeof(*m), GFP_KERNEL); |
195 | if (m) { | 195 | if (m) { |
@@ -202,7 +202,7 @@ static struct multipath *alloc_multipath(struct dm_target *ti) | |||
202 | INIT_WORK(&m->trigger_event, trigger_event); | 202 | INIT_WORK(&m->trigger_event, trigger_event); |
203 | init_waitqueue_head(&m->pg_init_wait); | 203 | init_waitqueue_head(&m->pg_init_wait); |
204 | mutex_init(&m->work_mutex); | 204 | mutex_init(&m->work_mutex); |
205 | m->mpio_pool = mempool_create_slab_pool(MIN_IOS, _mpio_cache); | 205 | m->mpio_pool = mempool_create_slab_pool(min_ios, _mpio_cache); |
206 | if (!m->mpio_pool) { | 206 | if (!m->mpio_pool) { |
207 | kfree(m); | 207 | kfree(m); |
208 | return NULL; | 208 | return NULL; |