diff options
Diffstat (limited to 'drivers/md/dm.c')
-rw-r--r-- | drivers/md/dm.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 6617ce4af095..372369b1cc20 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c | |||
@@ -204,6 +204,7 @@ static int (*_inits[])(void) __initdata = { | |||
204 | dm_target_init, | 204 | dm_target_init, |
205 | dm_linear_init, | 205 | dm_linear_init, |
206 | dm_stripe_init, | 206 | dm_stripe_init, |
207 | dm_kcopyd_init, | ||
207 | dm_interface_init, | 208 | dm_interface_init, |
208 | }; | 209 | }; |
209 | 210 | ||
@@ -212,6 +213,7 @@ static void (*_exits[])(void) = { | |||
212 | dm_target_exit, | 213 | dm_target_exit, |
213 | dm_linear_exit, | 214 | dm_linear_exit, |
214 | dm_stripe_exit, | 215 | dm_stripe_exit, |
216 | dm_kcopyd_exit, | ||
215 | dm_interface_exit, | 217 | dm_interface_exit, |
216 | }; | 218 | }; |
217 | 219 | ||
@@ -922,7 +924,7 @@ static void free_minor(int minor) | |||
922 | /* | 924 | /* |
923 | * See if the device with a specific minor # is free. | 925 | * See if the device with a specific minor # is free. |
924 | */ | 926 | */ |
925 | static int specific_minor(struct mapped_device *md, int minor) | 927 | static int specific_minor(int minor) |
926 | { | 928 | { |
927 | int r, m; | 929 | int r, m; |
928 | 930 | ||
@@ -955,7 +957,7 @@ out: | |||
955 | return r; | 957 | return r; |
956 | } | 958 | } |
957 | 959 | ||
958 | static int next_free_minor(struct mapped_device *md, int *minor) | 960 | static int next_free_minor(int *minor) |
959 | { | 961 | { |
960 | int r, m; | 962 | int r, m; |
961 | 963 | ||
@@ -966,9 +968,8 @@ static int next_free_minor(struct mapped_device *md, int *minor) | |||
966 | spin_lock(&_minor_lock); | 968 | spin_lock(&_minor_lock); |
967 | 969 | ||
968 | r = idr_get_new(&_minor_idr, MINOR_ALLOCED, &m); | 970 | r = idr_get_new(&_minor_idr, MINOR_ALLOCED, &m); |
969 | if (r) { | 971 | if (r) |
970 | goto out; | 972 | goto out; |
971 | } | ||
972 | 973 | ||
973 | if (m >= (1 << MINORBITS)) { | 974 | if (m >= (1 << MINORBITS)) { |
974 | idr_remove(&_minor_idr, m); | 975 | idr_remove(&_minor_idr, m); |
@@ -991,7 +992,7 @@ static struct block_device_operations dm_blk_dops; | |||
991 | static struct mapped_device *alloc_dev(int minor) | 992 | static struct mapped_device *alloc_dev(int minor) |
992 | { | 993 | { |
993 | int r; | 994 | int r; |
994 | struct mapped_device *md = kmalloc(sizeof(*md), GFP_KERNEL); | 995 | struct mapped_device *md = kzalloc(sizeof(*md), GFP_KERNEL); |
995 | void *old_md; | 996 | void *old_md; |
996 | 997 | ||
997 | if (!md) { | 998 | if (!md) { |
@@ -1004,13 +1005,12 @@ static struct mapped_device *alloc_dev(int minor) | |||
1004 | 1005 | ||
1005 | /* get a minor number for the dev */ | 1006 | /* get a minor number for the dev */ |
1006 | if (minor == DM_ANY_MINOR) | 1007 | if (minor == DM_ANY_MINOR) |
1007 | r = next_free_minor(md, &minor); | 1008 | r = next_free_minor(&minor); |
1008 | else | 1009 | else |
1009 | r = specific_minor(md, minor); | 1010 | r = specific_minor(minor); |
1010 | if (r < 0) | 1011 | if (r < 0) |
1011 | goto bad_minor; | 1012 | goto bad_minor; |
1012 | 1013 | ||
1013 | memset(md, 0, sizeof(*md)); | ||
1014 | init_rwsem(&md->io_lock); | 1014 | init_rwsem(&md->io_lock); |
1015 | mutex_init(&md->suspend_lock); | 1015 | mutex_init(&md->suspend_lock); |
1016 | spin_lock_init(&md->pushback_lock); | 1016 | spin_lock_init(&md->pushback_lock); |