| From c1b60e77931e114c04a9735b7a10ef82b9d97a51 Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Sat, 16 Oct 2010 22:34:39 +0200 |
| Subject: [PATCH] jbd2: Convert jbd2_slab_create_sem to mutex |
| |
| [commit 51dfacdef38b1dd6fc58b03dd1725d517516b115 upstream] |
| |
| jbd2_slab_create_sem is used as a mutex, so make it one. |
| |
| [ akpm muttered: We may as well make it local to |
| jbd2_journal_create_slab() also. ] |
| |
| [PG: required since 34rc1 integrates d2eecb03 which uses the |
| now deleted legacy DECLARE_MUTEX in tip changeset a15032a6f5] |
| |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Cc: Ted Ts'o <tytso@mit.edu> |
| Cc: Andrew Morton <akpm@linux-foundation.org> |
| LKML-Reference: <alpine.LFD.2.00.1010162231480.2496@localhost6.localdomain6> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c |
| index c03d4dc..a3e0894 100644 |
| --- a/fs/jbd2/journal.c |
| +++ b/fs/jbd2/journal.c |
| @@ -1833,7 +1833,6 @@ size_t journal_tag_bytes(journal_t *journal) |
| */ |
| #define JBD2_MAX_SLABS 8 |
| static struct kmem_cache *jbd2_slab[JBD2_MAX_SLABS]; |
| -static DECLARE_MUTEX(jbd2_slab_create_sem); |
| |
| static const char *jbd2_slab_names[JBD2_MAX_SLABS] = { |
| "jbd2_1k", "jbd2_2k", "jbd2_4k", "jbd2_8k", |
| @@ -1854,6 +1853,7 @@ static void jbd2_journal_destroy_slabs(void) |
| |
| static int jbd2_journal_create_slab(size_t size) |
| { |
| + static DEFINE_MUTEX(jbd2_slab_create_mutex); |
| int i = order_base_2(size) - 10; |
| size_t slab_size; |
| |
| @@ -1865,16 +1865,16 @@ static int jbd2_journal_create_slab(size_t size) |
| |
| if (unlikely(i < 0)) |
| i = 0; |
| - down(&jbd2_slab_create_sem); |
| + mutex_lock(&jbd2_slab_create_mutex); |
| if (jbd2_slab[i]) { |
| - up(&jbd2_slab_create_sem); |
| + mutex_unlock(&jbd2_slab_create_mutex); |
| return 0; /* Already created */ |
| } |
| |
| slab_size = 1 << (i+10); |
| jbd2_slab[i] = kmem_cache_create(jbd2_slab_names[i], slab_size, |
| slab_size, 0, NULL); |
| - up(&jbd2_slab_create_sem); |
| + mutex_unlock(&jbd2_slab_create_mutex); |
| if (!jbd2_slab[i]) { |
| printk(KERN_EMERG "JBD2: no memory for jbd2_slab cache\n"); |
| return -ENOMEM; |
| -- |
| 1.7.1.1 |
| |