diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /drivers/message/i2o | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'drivers/message/i2o')
-rw-r--r-- | drivers/message/i2o/README | 2 | ||||
-rw-r--r-- | drivers/message/i2o/README.ioctl | 2 | ||||
-rw-r--r-- | drivers/message/i2o/device.c | 8 | ||||
-rw-r--r-- | drivers/message/i2o/driver.c | 3 | ||||
-rw-r--r-- | drivers/message/i2o/i2o_block.c | 37 | ||||
-rw-r--r-- | drivers/message/i2o/i2o_block.h | 2 | ||||
-rw-r--r-- | drivers/message/i2o/i2o_config.c | 26 | ||||
-rw-r--r-- | drivers/message/i2o/i2o_scsi.c | 12 |
8 files changed, 47 insertions, 45 deletions
diff --git a/drivers/message/i2o/README b/drivers/message/i2o/README index 911fc3021e3b..f072a8eb3041 100644 --- a/drivers/message/i2o/README +++ b/drivers/message/i2o/README | |||
@@ -53,7 +53,7 @@ Symbios Logic (Now LSI) | |||
53 | BoxHill Corporation | 53 | BoxHill Corporation |
54 | Loan of initial FibreChannel disk array used for development work. | 54 | Loan of initial FibreChannel disk array used for development work. |
55 | 55 | ||
56 | European Comission | 56 | European Commission |
57 | Funding the work done by the University of Helsinki | 57 | Funding the work done by the University of Helsinki |
58 | 58 | ||
59 | SysKonnect | 59 | SysKonnect |
diff --git a/drivers/message/i2o/README.ioctl b/drivers/message/i2o/README.ioctl index 65c0c47aeb79..5fb195af43e2 100644 --- a/drivers/message/i2o/README.ioctl +++ b/drivers/message/i2o/README.ioctl | |||
@@ -110,7 +110,7 @@ V. Getting Logical Configuration Table | |||
110 | ENOBUFS Buffer not large enough. If this occurs, the required | 110 | ENOBUFS Buffer not large enough. If this occurs, the required |
111 | buffer length is written into *(lct->reslen) | 111 | buffer length is written into *(lct->reslen) |
112 | 112 | ||
113 | VI. Settting Parameters | 113 | VI. Setting Parameters |
114 | 114 | ||
115 | SYNOPSIS | 115 | SYNOPSIS |
116 | 116 | ||
diff --git a/drivers/message/i2o/device.c b/drivers/message/i2o/device.c index 0ee4264f5db7..4547db99f7da 100644 --- a/drivers/message/i2o/device.c +++ b/drivers/message/i2o/device.c | |||
@@ -65,7 +65,7 @@ int i2o_device_claim(struct i2o_device *dev) | |||
65 | 65 | ||
66 | rc = i2o_device_issue_claim(dev, I2O_CMD_UTIL_CLAIM, I2O_CLAIM_PRIMARY); | 66 | rc = i2o_device_issue_claim(dev, I2O_CMD_UTIL_CLAIM, I2O_CLAIM_PRIMARY); |
67 | if (!rc) | 67 | if (!rc) |
68 | pr_debug("i2o: claim of device %d succeded\n", | 68 | pr_debug("i2o: claim of device %d succeeded\n", |
69 | dev->lct_data.tid); | 69 | dev->lct_data.tid); |
70 | else | 70 | else |
71 | pr_debug("i2o: claim of device %d failed %d\n", | 71 | pr_debug("i2o: claim of device %d failed %d\n", |
@@ -110,7 +110,7 @@ int i2o_device_claim_release(struct i2o_device *dev) | |||
110 | } | 110 | } |
111 | 111 | ||
112 | if (!rc) | 112 | if (!rc) |
113 | pr_debug("i2o: claim release of device %d succeded\n", | 113 | pr_debug("i2o: claim release of device %d succeeded\n", |
114 | dev->lct_data.tid); | 114 | dev->lct_data.tid); |
115 | else | 115 | else |
116 | pr_debug("i2o: claim release of device %d failed %d\n", | 116 | pr_debug("i2o: claim release of device %d failed %d\n", |
@@ -248,7 +248,7 @@ static int i2o_device_add(struct i2o_controller *c, i2o_lct_entry *entry) | |||
248 | goto unreg_dev; | 248 | goto unreg_dev; |
249 | } | 249 | } |
250 | 250 | ||
251 | /* create user entries refering to this device */ | 251 | /* create user entries referring to this device */ |
252 | list_for_each_entry(tmp, &c->devices, list) | 252 | list_for_each_entry(tmp, &c->devices, list) |
253 | if ((tmp->lct_data.user_tid == i2o_dev->lct_data.tid) | 253 | if ((tmp->lct_data.user_tid == i2o_dev->lct_data.tid) |
254 | && (tmp != i2o_dev)) { | 254 | && (tmp != i2o_dev)) { |
@@ -267,7 +267,7 @@ static int i2o_device_add(struct i2o_controller *c, i2o_lct_entry *entry) | |||
267 | goto rmlink1; | 267 | goto rmlink1; |
268 | } | 268 | } |
269 | 269 | ||
270 | /* create parent entries refering to this device */ | 270 | /* create parent entries referring to this device */ |
271 | list_for_each_entry(tmp, &c->devices, list) | 271 | list_for_each_entry(tmp, &c->devices, list) |
272 | if ((tmp->lct_data.parent_tid == i2o_dev->lct_data.tid) | 272 | if ((tmp->lct_data.parent_tid == i2o_dev->lct_data.tid) |
273 | && (tmp != i2o_dev)) { | 273 | && (tmp != i2o_dev)) { |
diff --git a/drivers/message/i2o/driver.c b/drivers/message/i2o/driver.c index a0421efe04ca..8a5b2d8f4daf 100644 --- a/drivers/message/i2o/driver.c +++ b/drivers/message/i2o/driver.c | |||
@@ -84,7 +84,8 @@ int i2o_driver_register(struct i2o_driver *drv) | |||
84 | osm_debug("Register driver %s\n", drv->name); | 84 | osm_debug("Register driver %s\n", drv->name); |
85 | 85 | ||
86 | if (drv->event) { | 86 | if (drv->event) { |
87 | drv->event_queue = create_workqueue(drv->name); | 87 | drv->event_queue = alloc_workqueue(drv->name, |
88 | WQ_MEM_RECLAIM, 1); | ||
88 | if (!drv->event_queue) { | 89 | if (!drv->event_queue) { |
89 | osm_err("Could not initialize event queue for driver " | 90 | osm_err("Could not initialize event queue for driver " |
90 | "%s\n", drv->name); | 91 | "%s\n", drv->name); |
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c index f0f1e667000f..4796bbf0ae4e 100644 --- a/drivers/message/i2o/i2o_block.c +++ b/drivers/message/i2o/i2o_block.c | |||
@@ -53,7 +53,7 @@ | |||
53 | #include <linux/module.h> | 53 | #include <linux/module.h> |
54 | #include <linux/slab.h> | 54 | #include <linux/slab.h> |
55 | #include <linux/i2o.h> | 55 | #include <linux/i2o.h> |
56 | #include <linux/smp_lock.h> | 56 | #include <linux/mutex.h> |
57 | 57 | ||
58 | #include <linux/mempool.h> | 58 | #include <linux/mempool.h> |
59 | 59 | ||
@@ -69,6 +69,7 @@ | |||
69 | #define OSM_VERSION "1.325" | 69 | #define OSM_VERSION "1.325" |
70 | #define OSM_DESCRIPTION "I2O Block Device OSM" | 70 | #define OSM_DESCRIPTION "I2O Block Device OSM" |
71 | 71 | ||
72 | static DEFINE_MUTEX(i2o_block_mutex); | ||
72 | static struct i2o_driver i2o_block_driver; | 73 | static struct i2o_driver i2o_block_driver; |
73 | 74 | ||
74 | /* global Block OSM request mempool */ | 75 | /* global Block OSM request mempool */ |
@@ -308,7 +309,7 @@ static inline void i2o_block_request_free(struct i2o_block_request *ireq) | |||
308 | * @ireq: I2O block request | 309 | * @ireq: I2O block request |
309 | * @mptr: message body pointer | 310 | * @mptr: message body pointer |
310 | * | 311 | * |
311 | * Builds the SG list and map it to be accessable by the controller. | 312 | * Builds the SG list and map it to be accessible by the controller. |
312 | * | 313 | * |
313 | * Returns 0 on failure or 1 on success. | 314 | * Returns 0 on failure or 1 on success. |
314 | */ | 315 | */ |
@@ -578,7 +579,7 @@ static int i2o_block_open(struct block_device *bdev, fmode_t mode) | |||
578 | if (!dev->i2o_dev) | 579 | if (!dev->i2o_dev) |
579 | return -ENODEV; | 580 | return -ENODEV; |
580 | 581 | ||
581 | lock_kernel(); | 582 | mutex_lock(&i2o_block_mutex); |
582 | if (dev->power > 0x1f) | 583 | if (dev->power > 0x1f) |
583 | i2o_block_device_power(dev, 0x02); | 584 | i2o_block_device_power(dev, 0x02); |
584 | 585 | ||
@@ -587,7 +588,7 @@ static int i2o_block_open(struct block_device *bdev, fmode_t mode) | |||
587 | i2o_block_device_lock(dev->i2o_dev, -1); | 588 | i2o_block_device_lock(dev->i2o_dev, -1); |
588 | 589 | ||
589 | osm_debug("Ready.\n"); | 590 | osm_debug("Ready.\n"); |
590 | unlock_kernel(); | 591 | mutex_unlock(&i2o_block_mutex); |
591 | 592 | ||
592 | return 0; | 593 | return 0; |
593 | }; | 594 | }; |
@@ -609,7 +610,7 @@ static int i2o_block_release(struct gendisk *disk, fmode_t mode) | |||
609 | 610 | ||
610 | /* | 611 | /* |
611 | * This is to deail with the case of an application | 612 | * This is to deail with the case of an application |
612 | * opening a device and then the device dissapears while | 613 | * opening a device and then the device disappears while |
613 | * it's in use, and then the application tries to release | 614 | * it's in use, and then the application tries to release |
614 | * it. ex: Unmounting a deleted RAID volume at reboot. | 615 | * it. ex: Unmounting a deleted RAID volume at reboot. |
615 | * If we send messages, it will just cause FAILs since | 616 | * If we send messages, it will just cause FAILs since |
@@ -618,7 +619,7 @@ static int i2o_block_release(struct gendisk *disk, fmode_t mode) | |||
618 | if (!dev->i2o_dev) | 619 | if (!dev->i2o_dev) |
619 | return 0; | 620 | return 0; |
620 | 621 | ||
621 | lock_kernel(); | 622 | mutex_lock(&i2o_block_mutex); |
622 | i2o_block_device_flush(dev->i2o_dev); | 623 | i2o_block_device_flush(dev->i2o_dev); |
623 | 624 | ||
624 | i2o_block_device_unlock(dev->i2o_dev, -1); | 625 | i2o_block_device_unlock(dev->i2o_dev, -1); |
@@ -629,7 +630,7 @@ static int i2o_block_release(struct gendisk *disk, fmode_t mode) | |||
629 | operation = 0x24; | 630 | operation = 0x24; |
630 | 631 | ||
631 | i2o_block_device_power(dev, operation); | 632 | i2o_block_device_power(dev, operation); |
632 | unlock_kernel(); | 633 | mutex_unlock(&i2o_block_mutex); |
633 | 634 | ||
634 | return 0; | 635 | return 0; |
635 | } | 636 | } |
@@ -664,7 +665,7 @@ static int i2o_block_ioctl(struct block_device *bdev, fmode_t mode, | |||
664 | if (!capable(CAP_SYS_ADMIN)) | 665 | if (!capable(CAP_SYS_ADMIN)) |
665 | return -EPERM; | 666 | return -EPERM; |
666 | 667 | ||
667 | lock_kernel(); | 668 | mutex_lock(&i2o_block_mutex); |
668 | switch (cmd) { | 669 | switch (cmd) { |
669 | case BLKI2OGRSTRAT: | 670 | case BLKI2OGRSTRAT: |
670 | ret = put_user(dev->rcache, (int __user *)arg); | 671 | ret = put_user(dev->rcache, (int __user *)arg); |
@@ -688,33 +689,35 @@ static int i2o_block_ioctl(struct block_device *bdev, fmode_t mode, | |||
688 | ret = 0; | 689 | ret = 0; |
689 | break; | 690 | break; |
690 | } | 691 | } |
691 | unlock_kernel(); | 692 | mutex_unlock(&i2o_block_mutex); |
692 | 693 | ||
693 | return ret; | 694 | return ret; |
694 | }; | 695 | }; |
695 | 696 | ||
696 | /** | 697 | /** |
697 | * i2o_block_media_changed - Have we seen a media change? | 698 | * i2o_block_check_events - Have we seen a media change? |
698 | * @disk: gendisk which should be verified | 699 | * @disk: gendisk which should be verified |
700 | * @clearing: events being cleared | ||
699 | * | 701 | * |
700 | * Verifies if the media has changed. | 702 | * Verifies if the media has changed. |
701 | * | 703 | * |
702 | * Returns 1 if the media was changed or 0 otherwise. | 704 | * Returns 1 if the media was changed or 0 otherwise. |
703 | */ | 705 | */ |
704 | static int i2o_block_media_changed(struct gendisk *disk) | 706 | static unsigned int i2o_block_check_events(struct gendisk *disk, |
707 | unsigned int clearing) | ||
705 | { | 708 | { |
706 | struct i2o_block_device *p = disk->private_data; | 709 | struct i2o_block_device *p = disk->private_data; |
707 | 710 | ||
708 | if (p->media_change_flag) { | 711 | if (p->media_change_flag) { |
709 | p->media_change_flag = 0; | 712 | p->media_change_flag = 0; |
710 | return 1; | 713 | return DISK_EVENT_MEDIA_CHANGE; |
711 | } | 714 | } |
712 | return 0; | 715 | return 0; |
713 | } | 716 | } |
714 | 717 | ||
715 | /** | 718 | /** |
716 | * i2o_block_transfer - Transfer a request to/from the I2O controller | 719 | * i2o_block_transfer - Transfer a request to/from the I2O controller |
717 | * @req: the request which should be transfered | 720 | * @req: the request which should be transferred |
718 | * | 721 | * |
719 | * This function converts the request into a I2O message. The necessary | 722 | * This function converts the request into a I2O message. The necessary |
720 | * DMA buffers are allocated and after everything is setup post the message | 723 | * DMA buffers are allocated and after everything is setup post the message |
@@ -894,11 +897,7 @@ static void i2o_block_request_fn(struct request_queue *q) | |||
894 | { | 897 | { |
895 | struct request *req; | 898 | struct request *req; |
896 | 899 | ||
897 | while (!blk_queue_plugged(q)) { | 900 | while ((req = blk_peek_request(q)) != NULL) { |
898 | req = blk_peek_request(q); | ||
899 | if (!req) | ||
900 | break; | ||
901 | |||
902 | if (req->cmd_type == REQ_TYPE_FS) { | 901 | if (req->cmd_type == REQ_TYPE_FS) { |
903 | struct i2o_block_delayed_request *dreq; | 902 | struct i2o_block_delayed_request *dreq; |
904 | struct i2o_block_request *ireq = req->special; | 903 | struct i2o_block_request *ireq = req->special; |
@@ -949,7 +948,7 @@ static const struct block_device_operations i2o_block_fops = { | |||
949 | .ioctl = i2o_block_ioctl, | 948 | .ioctl = i2o_block_ioctl, |
950 | .compat_ioctl = i2o_block_ioctl, | 949 | .compat_ioctl = i2o_block_ioctl, |
951 | .getgeo = i2o_block_getgeo, | 950 | .getgeo = i2o_block_getgeo, |
952 | .media_changed = i2o_block_media_changed | 951 | .check_events = i2o_block_check_events, |
953 | }; | 952 | }; |
954 | 953 | ||
955 | /** | 954 | /** |
diff --git a/drivers/message/i2o/i2o_block.h b/drivers/message/i2o/i2o_block.h index 67f921b4419b..cf8873cbca3f 100644 --- a/drivers/message/i2o/i2o_block.h +++ b/drivers/message/i2o/i2o_block.h | |||
@@ -73,7 +73,7 @@ struct i2o_block_device { | |||
73 | struct i2o_device *i2o_dev; /* pointer to I2O device */ | 73 | struct i2o_device *i2o_dev; /* pointer to I2O device */ |
74 | struct gendisk *gd; | 74 | struct gendisk *gd; |
75 | spinlock_t lock; /* queue lock */ | 75 | spinlock_t lock; /* queue lock */ |
76 | struct list_head open_queue; /* list of transfered, but unfinished | 76 | struct list_head open_queue; /* list of transferred, but unfinished |
77 | requests */ | 77 | requests */ |
78 | unsigned int open_queue_depth; /* number of requests in the queue */ | 78 | unsigned int open_queue_depth; /* number of requests in the queue */ |
79 | 79 | ||
diff --git a/drivers/message/i2o/i2o_config.c b/drivers/message/i2o/i2o_config.c index 068ba0785bb4..098de2b35784 100644 --- a/drivers/message/i2o/i2o_config.c +++ b/drivers/message/i2o/i2o_config.c | |||
@@ -31,7 +31,7 @@ | |||
31 | */ | 31 | */ |
32 | 32 | ||
33 | #include <linux/miscdevice.h> | 33 | #include <linux/miscdevice.h> |
34 | #include <linux/smp_lock.h> | 34 | #include <linux/mutex.h> |
35 | #include <linux/compat.h> | 35 | #include <linux/compat.h> |
36 | #include <linux/slab.h> | 36 | #include <linux/slab.h> |
37 | 37 | ||
@@ -41,6 +41,7 @@ | |||
41 | 41 | ||
42 | #define SG_TABLESIZE 30 | 42 | #define SG_TABLESIZE 30 |
43 | 43 | ||
44 | static DEFINE_MUTEX(i2o_cfg_mutex); | ||
44 | static long i2o_cfg_ioctl(struct file *, unsigned int, unsigned long); | 45 | static long i2o_cfg_ioctl(struct file *, unsigned int, unsigned long); |
45 | 46 | ||
46 | static spinlock_t i2o_config_lock; | 47 | static spinlock_t i2o_config_lock; |
@@ -741,7 +742,7 @@ static long i2o_cfg_compat_ioctl(struct file *file, unsigned cmd, | |||
741 | unsigned long arg) | 742 | unsigned long arg) |
742 | { | 743 | { |
743 | int ret; | 744 | int ret; |
744 | lock_kernel(); | 745 | mutex_lock(&i2o_cfg_mutex); |
745 | switch (cmd) { | 746 | switch (cmd) { |
746 | case I2OGETIOPS: | 747 | case I2OGETIOPS: |
747 | ret = i2o_cfg_ioctl(file, cmd, arg); | 748 | ret = i2o_cfg_ioctl(file, cmd, arg); |
@@ -753,7 +754,7 @@ static long i2o_cfg_compat_ioctl(struct file *file, unsigned cmd, | |||
753 | ret = -ENOIOCTLCMD; | 754 | ret = -ENOIOCTLCMD; |
754 | break; | 755 | break; |
755 | } | 756 | } |
756 | unlock_kernel(); | 757 | mutex_unlock(&i2o_cfg_mutex); |
757 | return ret; | 758 | return ret; |
758 | } | 759 | } |
759 | 760 | ||
@@ -981,7 +982,7 @@ static long i2o_cfg_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) | |||
981 | { | 982 | { |
982 | int ret; | 983 | int ret; |
983 | 984 | ||
984 | lock_kernel(); | 985 | mutex_lock(&i2o_cfg_mutex); |
985 | switch (cmd) { | 986 | switch (cmd) { |
986 | case I2OGETIOPS: | 987 | case I2OGETIOPS: |
987 | ret = i2o_cfg_getiops(arg); | 988 | ret = i2o_cfg_getiops(arg); |
@@ -1037,21 +1038,20 @@ static long i2o_cfg_ioctl(struct file *fp, unsigned int cmd, unsigned long arg) | |||
1037 | osm_debug("unknown ioctl called!\n"); | 1038 | osm_debug("unknown ioctl called!\n"); |
1038 | ret = -EINVAL; | 1039 | ret = -EINVAL; |
1039 | } | 1040 | } |
1040 | unlock_kernel(); | 1041 | mutex_unlock(&i2o_cfg_mutex); |
1041 | return ret; | 1042 | return ret; |
1042 | } | 1043 | } |
1043 | 1044 | ||
1044 | static int cfg_open(struct inode *inode, struct file *file) | 1045 | static int cfg_open(struct inode *inode, struct file *file) |
1045 | { | 1046 | { |
1046 | struct i2o_cfg_info *tmp = | 1047 | struct i2o_cfg_info *tmp = kmalloc(sizeof(struct i2o_cfg_info), |
1047 | (struct i2o_cfg_info *)kmalloc(sizeof(struct i2o_cfg_info), | ||
1048 | GFP_KERNEL); | 1048 | GFP_KERNEL); |
1049 | unsigned long flags; | 1049 | unsigned long flags; |
1050 | 1050 | ||
1051 | if (!tmp) | 1051 | if (!tmp) |
1052 | return -ENOMEM; | 1052 | return -ENOMEM; |
1053 | 1053 | ||
1054 | lock_kernel(); | 1054 | mutex_lock(&i2o_cfg_mutex); |
1055 | file->private_data = (void *)(i2o_cfg_info_id++); | 1055 | file->private_data = (void *)(i2o_cfg_info_id++); |
1056 | tmp->fp = file; | 1056 | tmp->fp = file; |
1057 | tmp->fasync = NULL; | 1057 | tmp->fasync = NULL; |
@@ -1065,7 +1065,7 @@ static int cfg_open(struct inode *inode, struct file *file) | |||
1065 | spin_lock_irqsave(&i2o_config_lock, flags); | 1065 | spin_lock_irqsave(&i2o_config_lock, flags); |
1066 | open_files = tmp; | 1066 | open_files = tmp; |
1067 | spin_unlock_irqrestore(&i2o_config_lock, flags); | 1067 | spin_unlock_irqrestore(&i2o_config_lock, flags); |
1068 | unlock_kernel(); | 1068 | mutex_unlock(&i2o_cfg_mutex); |
1069 | 1069 | ||
1070 | return 0; | 1070 | return 0; |
1071 | } | 1071 | } |
@@ -1076,14 +1076,14 @@ static int cfg_fasync(int fd, struct file *fp, int on) | |||
1076 | struct i2o_cfg_info *p; | 1076 | struct i2o_cfg_info *p; |
1077 | int ret = -EBADF; | 1077 | int ret = -EBADF; |
1078 | 1078 | ||
1079 | lock_kernel(); | 1079 | mutex_lock(&i2o_cfg_mutex); |
1080 | for (p = open_files; p; p = p->next) | 1080 | for (p = open_files; p; p = p->next) |
1081 | if (p->q_id == id) | 1081 | if (p->q_id == id) |
1082 | break; | 1082 | break; |
1083 | 1083 | ||
1084 | if (p) | 1084 | if (p) |
1085 | ret = fasync_helper(fd, fp, on, &p->fasync); | 1085 | ret = fasync_helper(fd, fp, on, &p->fasync); |
1086 | unlock_kernel(); | 1086 | mutex_unlock(&i2o_cfg_mutex); |
1087 | return ret; | 1087 | return ret; |
1088 | } | 1088 | } |
1089 | 1089 | ||
@@ -1093,7 +1093,7 @@ static int cfg_release(struct inode *inode, struct file *file) | |||
1093 | struct i2o_cfg_info *p, **q; | 1093 | struct i2o_cfg_info *p, **q; |
1094 | unsigned long flags; | 1094 | unsigned long flags; |
1095 | 1095 | ||
1096 | lock_kernel(); | 1096 | mutex_lock(&i2o_cfg_mutex); |
1097 | spin_lock_irqsave(&i2o_config_lock, flags); | 1097 | spin_lock_irqsave(&i2o_config_lock, flags); |
1098 | for (q = &open_files; (p = *q) != NULL; q = &p->next) { | 1098 | for (q = &open_files; (p = *q) != NULL; q = &p->next) { |
1099 | if (p->q_id == id) { | 1099 | if (p->q_id == id) { |
@@ -1103,7 +1103,7 @@ static int cfg_release(struct inode *inode, struct file *file) | |||
1103 | } | 1103 | } |
1104 | } | 1104 | } |
1105 | spin_unlock_irqrestore(&i2o_config_lock, flags); | 1105 | spin_unlock_irqrestore(&i2o_config_lock, flags); |
1106 | unlock_kernel(); | 1106 | mutex_unlock(&i2o_cfg_mutex); |
1107 | 1107 | ||
1108 | return 0; | 1108 | return 0; |
1109 | } | 1109 | } |
diff --git a/drivers/message/i2o/i2o_scsi.c b/drivers/message/i2o/i2o_scsi.c index ea6b2197da8a..74fbe56321ff 100644 --- a/drivers/message/i2o/i2o_scsi.c +++ b/drivers/message/i2o/i2o_scsi.c | |||
@@ -204,7 +204,7 @@ static int i2o_scsi_remove(struct device *dev) | |||
204 | * i2o_scsi_probe - verify if dev is a I2O SCSI device and install it | 204 | * i2o_scsi_probe - verify if dev is a I2O SCSI device and install it |
205 | * @dev: device to verify if it is a I2O SCSI device | 205 | * @dev: device to verify if it is a I2O SCSI device |
206 | * | 206 | * |
207 | * Retrieve channel, id and lun for I2O device. If everthing goes well | 207 | * Retrieve channel, id and lun for I2O device. If everything goes well |
208 | * register the I2O device as SCSI device on the I2O SCSI controller. | 208 | * register the I2O device as SCSI device on the I2O SCSI controller. |
209 | * | 209 | * |
210 | * Returns 0 on success or negative error code on failure. | 210 | * Returns 0 on success or negative error code on failure. |
@@ -361,7 +361,7 @@ static int i2o_scsi_reply(struct i2o_controller *c, u32 m, | |||
361 | */ | 361 | */ |
362 | error = le32_to_cpu(msg->body[0]); | 362 | error = le32_to_cpu(msg->body[0]); |
363 | 363 | ||
364 | osm_debug("Completed %ld\n", cmd->serial_number); | 364 | osm_debug("Completed %0x%p\n", cmd); |
365 | 365 | ||
366 | cmd->result = error & 0xff; | 366 | cmd->result = error & 0xff; |
367 | /* | 367 | /* |
@@ -506,7 +506,7 @@ static struct i2o_driver i2o_scsi_driver = { | |||
506 | * Locks: takes the controller lock on error path only | 506 | * Locks: takes the controller lock on error path only |
507 | */ | 507 | */ |
508 | 508 | ||
509 | static int i2o_scsi_queuecommand(struct scsi_cmnd *SCpnt, | 509 | static int i2o_scsi_queuecommand_lck(struct scsi_cmnd *SCpnt, |
510 | void (*done) (struct scsi_cmnd *)) | 510 | void (*done) (struct scsi_cmnd *)) |
511 | { | 511 | { |
512 | struct i2o_controller *c; | 512 | struct i2o_controller *c; |
@@ -678,7 +678,7 @@ static int i2o_scsi_queuecommand(struct scsi_cmnd *SCpnt, | |||
678 | /* Queue the message */ | 678 | /* Queue the message */ |
679 | i2o_msg_post(c, msg); | 679 | i2o_msg_post(c, msg); |
680 | 680 | ||
681 | osm_debug("Issued %ld\n", SCpnt->serial_number); | 681 | osm_debug("Issued %0x%p\n", SCpnt); |
682 | 682 | ||
683 | return 0; | 683 | return 0; |
684 | 684 | ||
@@ -688,7 +688,9 @@ static int i2o_scsi_queuecommand(struct scsi_cmnd *SCpnt, | |||
688 | 688 | ||
689 | exit: | 689 | exit: |
690 | return rc; | 690 | return rc; |
691 | }; | 691 | } |
692 | |||
693 | static DEF_SCSI_QCMD(i2o_scsi_queuecommand) | ||
692 | 694 | ||
693 | /** | 695 | /** |
694 | * i2o_scsi_abort - abort a running command | 696 | * i2o_scsi_abort - abort a running command |