mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
jbd2: move bdget out of critical section
bdget() should not be called when we hold spinlocks since it might sleep. Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Zhu Yanhai <gaoyang.zyh@taobao.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
0ce790e7d7
commit
50f689af01
@ -2413,10 +2413,12 @@ const char *jbd2_dev_to_name(dev_t device)
|
|||||||
new_dev = kmalloc(sizeof(struct devname_cache), GFP_KERNEL);
|
new_dev = kmalloc(sizeof(struct devname_cache), GFP_KERNEL);
|
||||||
if (!new_dev)
|
if (!new_dev)
|
||||||
return "NODEV-ALLOCFAILURE"; /* Something non-NULL */
|
return "NODEV-ALLOCFAILURE"; /* Something non-NULL */
|
||||||
|
bd = bdget(device);
|
||||||
spin_lock(&devname_cache_lock);
|
spin_lock(&devname_cache_lock);
|
||||||
if (devcache[i]) {
|
if (devcache[i]) {
|
||||||
if (devcache[i]->device == device) {
|
if (devcache[i]->device == device) {
|
||||||
kfree(new_dev);
|
kfree(new_dev);
|
||||||
|
bdput(bd);
|
||||||
ret = devcache[i]->devname;
|
ret = devcache[i]->devname;
|
||||||
spin_unlock(&devname_cache_lock);
|
spin_unlock(&devname_cache_lock);
|
||||||
return ret;
|
return ret;
|
||||||
@ -2425,7 +2427,6 @@ const char *jbd2_dev_to_name(dev_t device)
|
|||||||
}
|
}
|
||||||
devcache[i] = new_dev;
|
devcache[i] = new_dev;
|
||||||
devcache[i]->device = device;
|
devcache[i]->device = device;
|
||||||
bd = bdget(device);
|
|
||||||
if (bd) {
|
if (bd) {
|
||||||
bdevname(bd, devcache[i]->devname);
|
bdevname(bd, devcache[i]->devname);
|
||||||
bdput(bd);
|
bdput(bd);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user