diff options
-rw-r--r-- | drivers/md/dm-bufio.c | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c index 87795a361d09..6dd465fa90a7 100644 --- a/drivers/md/dm-bufio.c +++ b/drivers/md/dm-bufio.c | |||
@@ -173,7 +173,6 @@ struct dm_buffer { | |||
173 | /*----------------------------------------------------------------*/ | 173 | /*----------------------------------------------------------------*/ |
174 | 174 | ||
175 | static struct kmem_cache *dm_bufio_caches[PAGE_SHIFT - SECTOR_SHIFT]; | 175 | static struct kmem_cache *dm_bufio_caches[PAGE_SHIFT - SECTOR_SHIFT]; |
176 | static char *dm_bufio_cache_names[PAGE_SHIFT - SECTOR_SHIFT]; | ||
177 | 176 | ||
178 | static inline int dm_bufio_cache_index(struct dm_bufio_client *c) | 177 | static inline int dm_bufio_cache_index(struct dm_bufio_client *c) |
179 | { | 178 | { |
@@ -185,7 +184,6 @@ static inline int dm_bufio_cache_index(struct dm_bufio_client *c) | |||
185 | } | 184 | } |
186 | 185 | ||
187 | #define DM_BUFIO_CACHE(c) (dm_bufio_caches[dm_bufio_cache_index(c)]) | 186 | #define DM_BUFIO_CACHE(c) (dm_bufio_caches[dm_bufio_cache_index(c)]) |
188 | #define DM_BUFIO_CACHE_NAME(c) (dm_bufio_cache_names[dm_bufio_cache_index(c)]) | ||
189 | 187 | ||
190 | #define dm_bufio_in_request() (!!current->bio_list) | 188 | #define dm_bufio_in_request() (!!current->bio_list) |
191 | 189 | ||
@@ -1703,19 +1701,10 @@ struct dm_bufio_client *dm_bufio_client_create(struct block_device *bdev, unsign | |||
1703 | 1701 | ||
1704 | mutex_lock(&dm_bufio_clients_lock); | 1702 | mutex_lock(&dm_bufio_clients_lock); |
1705 | if (c->blocks_per_page_bits) { | 1703 | if (c->blocks_per_page_bits) { |
1706 | if (!DM_BUFIO_CACHE_NAME(c)) { | ||
1707 | DM_BUFIO_CACHE_NAME(c) = kasprintf(GFP_KERNEL, "dm_bufio_cache-%u", c->block_size); | ||
1708 | if (!DM_BUFIO_CACHE_NAME(c)) { | ||
1709 | r = -ENOMEM; | ||
1710 | mutex_unlock(&dm_bufio_clients_lock); | ||
1711 | goto bad; | ||
1712 | } | ||
1713 | } | ||
1714 | |||
1715 | if (!DM_BUFIO_CACHE(c)) { | 1704 | if (!DM_BUFIO_CACHE(c)) { |
1716 | DM_BUFIO_CACHE(c) = kmem_cache_create(DM_BUFIO_CACHE_NAME(c), | 1705 | char name[26]; |
1717 | c->block_size, | 1706 | snprintf(name, sizeof name, "dm_bufio_cache-%u", c->block_size); |
1718 | c->block_size, 0, NULL); | 1707 | DM_BUFIO_CACHE(c) = kmem_cache_create(name, c->block_size, c->block_size, 0, NULL); |
1719 | if (!DM_BUFIO_CACHE(c)) { | 1708 | if (!DM_BUFIO_CACHE(c)) { |
1720 | r = -ENOMEM; | 1709 | r = -ENOMEM; |
1721 | mutex_unlock(&dm_bufio_clients_lock); | 1710 | mutex_unlock(&dm_bufio_clients_lock); |
@@ -1908,7 +1897,6 @@ static int __init dm_bufio_init(void) | |||
1908 | dm_bufio_current_allocated = 0; | 1897 | dm_bufio_current_allocated = 0; |
1909 | 1898 | ||
1910 | memset(&dm_bufio_caches, 0, sizeof dm_bufio_caches); | 1899 | memset(&dm_bufio_caches, 0, sizeof dm_bufio_caches); |
1911 | memset(&dm_bufio_cache_names, 0, sizeof dm_bufio_cache_names); | ||
1912 | 1900 | ||
1913 | mem = (__u64)mult_frac(totalram_pages - totalhigh_pages, | 1901 | mem = (__u64)mult_frac(totalram_pages - totalhigh_pages, |
1914 | DM_BUFIO_MEMORY_PERCENT, 100) << PAGE_SHIFT; | 1902 | DM_BUFIO_MEMORY_PERCENT, 100) << PAGE_SHIFT; |
@@ -1952,9 +1940,6 @@ static void __exit dm_bufio_exit(void) | |||
1952 | for (i = 0; i < ARRAY_SIZE(dm_bufio_caches); i++) | 1940 | for (i = 0; i < ARRAY_SIZE(dm_bufio_caches); i++) |
1953 | kmem_cache_destroy(dm_bufio_caches[i]); | 1941 | kmem_cache_destroy(dm_bufio_caches[i]); |
1954 | 1942 | ||
1955 | for (i = 0; i < ARRAY_SIZE(dm_bufio_cache_names); i++) | ||
1956 | kfree(dm_bufio_cache_names[i]); | ||
1957 | |||
1958 | if (dm_bufio_client_count) { | 1943 | if (dm_bufio_client_count) { |
1959 | DMCRIT("%s: dm_bufio_client_count leaked: %d", | 1944 | DMCRIT("%s: dm_bufio_client_count leaked: %d", |
1960 | __func__, dm_bufio_client_count); | 1945 | __func__, dm_bufio_client_count); |