diff options
author | Arnd Bergmann <arnd@arndb.de> | 2010-06-02 08:28:52 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2010-10-05 09:01:10 -0400 |
commit | 2a48fc0ab24241755dc93bfd4f01d68efab47f5a (patch) | |
tree | fa9ae10ce89b26b7d8ae9ce24bdfda5e3007b763 /drivers/block/aoe/aoeblk.c | |
parent | 613655fa39ff6957754fa8ceb8559980920eb8ee (diff) |
block: autoconvert trivial BKL users to private mutex
The block device drivers have all gained new lock_kernel
calls from a recent pushdown, and some of the drivers
were already using the BKL before.
This turns the BKL into a set of per-driver mutexes.
Still need to check whether this is safe to do.
file=$1
name=$2
if grep -q lock_kernel ${file} ; then
if grep -q 'include.*linux.mutex.h' ${file} ; then
sed -i '/include.*<linux\/smp_lock.h>/d' ${file}
else
sed -i 's/include.*<linux\/smp_lock.h>.*$/include <linux\/mutex.h>/g' ${file}
fi
sed -i ${file} \
-e "/^#include.*linux.mutex.h/,$ {
1,/^\(static\|int\|long\)/ {
/^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);
} }" \
-e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
-e '/[ ]*cycle_kernel_lock();/d'
else
sed -i -e '/include.*\<smp_lock.h\>/d' ${file} \
-e '/cycle_kernel_lock()/d'
fi
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/block/aoe/aoeblk.c')
-rw-r--r-- | drivers/block/aoe/aoeblk.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/block/aoe/aoeblk.c b/drivers/block/aoe/aoeblk.c index a946929735a5..f21c237a9e5e 100644 --- a/drivers/block/aoe/aoeblk.c +++ b/drivers/block/aoe/aoeblk.c | |||
@@ -12,9 +12,10 @@ | |||
12 | #include <linux/slab.h> | 12 | #include <linux/slab.h> |
13 | #include <linux/genhd.h> | 13 | #include <linux/genhd.h> |
14 | #include <linux/netdevice.h> | 14 | #include <linux/netdevice.h> |
15 | #include <linux/smp_lock.h> | 15 | #include <linux/mutex.h> |
16 | #include "aoe.h" | 16 | #include "aoe.h" |
17 | 17 | ||
18 | static DEFINE_MUTEX(aoeblk_mutex); | ||
18 | static struct kmem_cache *buf_pool_cache; | 19 | static struct kmem_cache *buf_pool_cache; |
19 | 20 | ||
20 | static ssize_t aoedisk_show_state(struct device *dev, | 21 | static ssize_t aoedisk_show_state(struct device *dev, |
@@ -125,16 +126,16 @@ aoeblk_open(struct block_device *bdev, fmode_t mode) | |||
125 | struct aoedev *d = bdev->bd_disk->private_data; | 126 | struct aoedev *d = bdev->bd_disk->private_data; |
126 | ulong flags; | 127 | ulong flags; |
127 | 128 | ||
128 | lock_kernel(); | 129 | mutex_lock(&aoeblk_mutex); |
129 | spin_lock_irqsave(&d->lock, flags); | 130 | spin_lock_irqsave(&d->lock, flags); |
130 | if (d->flags & DEVFL_UP) { | 131 | if (d->flags & DEVFL_UP) { |
131 | d->nopen++; | 132 | d->nopen++; |
132 | spin_unlock_irqrestore(&d->lock, flags); | 133 | spin_unlock_irqrestore(&d->lock, flags); |
133 | unlock_kernel(); | 134 | mutex_unlock(&aoeblk_mutex); |
134 | return 0; | 135 | return 0; |
135 | } | 136 | } |
136 | spin_unlock_irqrestore(&d->lock, flags); | 137 | spin_unlock_irqrestore(&d->lock, flags); |
137 | unlock_kernel(); | 138 | mutex_unlock(&aoeblk_mutex); |
138 | return -ENODEV; | 139 | return -ENODEV; |
139 | } | 140 | } |
140 | 141 | ||