From 31910039b2c539351e2c8cb22b38eff2a85bf470 Mon Sep 17 00:00:00 2001 From: Mark Haverkamp Date: Mon, 27 Mar 2006 09:44:26 -0800 Subject: [PATCH] --- yaml --- r: 25795 b: refs/heads/master c: dc4adbf41385486b0c73e7382ce73f0e8b873243 h: refs/heads/master i: 25793: a30860891fc9566495f7ff93ab5c90e9ff8ada74 25791: f951c8b5d4056645d8f74a14f03ef83681e5a1f5 v: v3 --- [refs] | 2 +- trunk/drivers/scsi/aacraid/commctrl.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 94d278056bb2..ffe743f5597a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1241f3593a8857fab4259b6aa9d17f26e7de3a86 +refs/heads/master: dc4adbf41385486b0c73e7382ce73f0e8b873243 diff --git a/trunk/drivers/scsi/aacraid/commctrl.c b/trunk/drivers/scsi/aacraid/commctrl.c index 47fefca72695..9f75144e5247 100644 --- a/trunk/drivers/scsi/aacraid/commctrl.c +++ b/trunk/drivers/scsi/aacraid/commctrl.c @@ -38,6 +38,8 @@ #include #include #include +#include +#include #include #include @@ -293,6 +295,16 @@ static int next_getadapter_fib(struct aac_dev * dev, void __user *arg) status = 0; } else { spin_unlock_irqrestore(&dev->fib_lock, flags); + /* If someone killed the AIF aacraid thread, restart it */ + status = !dev->aif_thread; + if (status && dev->queues && dev->fsa_dev) { + /* Be paranoid, be very paranoid! */ + kthread_stop(dev->thread); + ssleep(1); + dev->aif_thread = 0; + dev->thread = kthread_run(aac_command_thread, dev, dev->name); + ssleep(1); + } if (f.wait) { if(down_interruptible(&fibctx->wait_sem) < 0) { status = -EINTR;