diff options
Diffstat (limited to 'drivers/scsi/aacraid/commsup.c')
-rw-r--r-- | drivers/scsi/aacraid/commsup.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c index 609fd19b1844..c7f80ec7abde 100644 --- a/drivers/scsi/aacraid/commsup.c +++ b/drivers/scsi/aacraid/commsup.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <linux/completion.h> | 39 | #include <linux/completion.h> |
40 | #include <linux/blkdev.h> | 40 | #include <linux/blkdev.h> |
41 | #include <linux/delay.h> | 41 | #include <linux/delay.h> |
42 | #include <linux/kthread.h> | ||
42 | #include <scsi/scsi_host.h> | 43 | #include <scsi/scsi_host.h> |
43 | #include <scsi/scsi_device.h> | 44 | #include <scsi/scsi_device.h> |
44 | #include <asm/semaphore.h> | 45 | #include <asm/semaphore.h> |
@@ -1045,8 +1046,9 @@ static void aac_handle_aif(struct aac_dev * dev, struct fib * fibptr) | |||
1045 | * more FIBs. | 1046 | * more FIBs. |
1046 | */ | 1047 | */ |
1047 | 1048 | ||
1048 | int aac_command_thread(struct aac_dev * dev) | 1049 | int aac_command_thread(void *data) |
1049 | { | 1050 | { |
1051 | struct aac_dev *dev = data; | ||
1050 | struct hw_fib *hw_fib, *hw_newfib; | 1052 | struct hw_fib *hw_fib, *hw_newfib; |
1051 | struct fib *fib, *newfib; | 1053 | struct fib *fib, *newfib; |
1052 | struct aac_fib_context *fibctx; | 1054 | struct aac_fib_context *fibctx; |
@@ -1058,12 +1060,7 @@ int aac_command_thread(struct aac_dev * dev) | |||
1058 | */ | 1060 | */ |
1059 | if (dev->aif_thread) | 1061 | if (dev->aif_thread) |
1060 | return -EINVAL; | 1062 | return -EINVAL; |
1061 | /* | 1063 | |
1062 | * Set up the name that will appear in 'ps' | ||
1063 | * stored in task_struct.comm[16]. | ||
1064 | */ | ||
1065 | daemonize("aacraid"); | ||
1066 | allow_signal(SIGKILL); | ||
1067 | /* | 1064 | /* |
1068 | * Let the DPC know it has a place to send the AIF's to. | 1065 | * Let the DPC know it has a place to send the AIF's to. |
1069 | */ | 1066 | */ |
@@ -1266,13 +1263,12 @@ int aac_command_thread(struct aac_dev * dev) | |||
1266 | spin_unlock_irqrestore(dev->queues->queue[HostNormCmdQueue].lock, flags); | 1263 | spin_unlock_irqrestore(dev->queues->queue[HostNormCmdQueue].lock, flags); |
1267 | schedule(); | 1264 | schedule(); |
1268 | 1265 | ||
1269 | if(signal_pending(current)) | 1266 | if (kthread_should_stop()) |
1270 | break; | 1267 | break; |
1271 | set_current_state(TASK_INTERRUPTIBLE); | 1268 | set_current_state(TASK_INTERRUPTIBLE); |
1272 | } | 1269 | } |
1273 | if (dev->queues) | 1270 | if (dev->queues) |
1274 | remove_wait_queue(&dev->queues->queue[HostNormCmdQueue].cmdready, &wait); | 1271 | remove_wait_queue(&dev->queues->queue[HostNormCmdQueue].cmdready, &wait); |
1275 | dev->aif_thread = 0; | 1272 | dev->aif_thread = 0; |
1276 | complete_and_exit(&dev->aif_completion, 0); | ||
1277 | return 0; | 1273 | return 0; |
1278 | } | 1274 | } |