[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1301734876-22207-1-git-send-email-gaoyang.zyh@taobao.com>
Date: Sat, 2 Apr 2011 17:01:16 +0800
From: Zhu Yanhai <zhu.yanhai@...il.com>
To: linux-ext4@...r.kernel.org
Cc: Andrew Morton <akpm@...ux-foundation.org>, Jan Kara <jack@...e.cz>,
Zhu Yanhai <gaoyang.zyh@...bao.com>
Subject: [PATCH] jbd2: Move bdget out of critical section
bdget() should not be called when we hold spinlocks since
it might sleep.
Signed-off-by: Zhu Yanhai <gaoyang.zyh@...bao.com>
---
fs/jbd2/journal.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index 90407b8..33dd3ef 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -2413,10 +2413,12 @@ const char *jbd2_dev_to_name(dev_t device)
new_dev = kmalloc(sizeof(struct devname_cache), GFP_KERNEL);
if (!new_dev)
return "NODEV-ALLOCFAILURE"; /* Something non-NULL */
+ bd = bdget(device);
spin_lock(&devname_cache_lock);
if (devcache[i]) {
if (devcache[i]->device == device) {
kfree(new_dev);
+ bdput(bd);
ret = devcache[i]->devname;
spin_unlock(&devname_cache_lock);
return ret;
@@ -2425,7 +2427,6 @@ const char *jbd2_dev_to_name(dev_t device)
}
devcache[i] = new_dev;
devcache[i]->device = device;
- bd = bdget(device);
if (bd) {
bdevname(bd, devcache[i]->devname);
bdput(bd);
--
1.7.4
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists