]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/block/viodasd.c
block: autoconvert trivial BKL users to private mutex
[net-next-2.6.git] / drivers / block / viodasd.c
index f651e51a3319e0311f6a7bcc5e3d7e12d0e7d0e4..e2ff697697c27c7a26d7f66d24bafd94f10e1031 100644 (file)
@@ -41,7 +41,7 @@
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <linux/string.h>
-#include <linux/smp_lock.h>
+#include <linux/mutex.h>
 #include <linux/dma-mapping.h>
 #include <linux/completion.h>
 #include <linux/device.h>
@@ -73,6 +73,7 @@ enum {
        MAX_DISK_NAME = FIELD_SIZEOF(struct gendisk, disk_name)
 };
 
+static DEFINE_MUTEX(viodasd_mutex);
 static DEFINE_SPINLOCK(viodasd_spinlock);
 
 #define VIOMAXREQ              16
@@ -180,9 +181,9 @@ static int viodasd_unlocked_open(struct block_device *bdev, fmode_t mode)
 {
        int ret;
 
-       lock_kernel();
+       mutex_lock(&viodasd_mutex);
        ret = viodasd_open(bdev, mode);
-       unlock_kernel();
+       mutex_unlock(&viodasd_mutex);
 
        return ret;
 }
@@ -196,7 +197,7 @@ static int viodasd_release(struct gendisk *disk, fmode_t mode)
        struct viodasd_device *d = disk->private_data;
        HvLpEvent_Rc hvrc;
 
-       lock_kernel();
+       mutex_lock(&viodasd_mutex);
        /* Send the event to OS/400.  We DON'T expect a response */
        hvrc = HvCallEvent_signalLpEventFast(viopath_hostLp,
                        HvLpEvent_Type_VirtualIo,
@@ -210,7 +211,7 @@ static int viodasd_release(struct gendisk *disk, fmode_t mode)
        if (hvrc != 0)
                pr_warning("HV close call failed %d\n", (int)hvrc);
 
-       unlock_kernel();
+       mutex_unlock(&viodasd_mutex);
 
        return 0;
 }