diff --git a/[refs] b/[refs] index 873923da77a3..a31c1e6d00dc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4f4f6c2502474f51654a699d7127d86c2f87075a +refs/heads/master: 8bdd3f8a6993fef2f364aca6e1a59559405773a2 diff --git a/trunk/block/as-iosched.c b/trunk/block/as-iosched.c index 96036846a001..612d64096300 100644 --- a/trunk/block/as-iosched.c +++ b/trunk/block/as-iosched.c @@ -170,11 +170,11 @@ static void free_as_io_context(struct as_io_context *aic) static void as_trim(struct io_context *ioc) { - spin_lock(&ioc->lock); + spin_lock_irq(&ioc->lock); if (ioc->aic) free_as_io_context(ioc->aic); ioc->aic = NULL; - spin_unlock(&ioc->lock); + spin_unlock_irq(&ioc->lock); } /* Called when the task exits */ @@ -235,10 +235,12 @@ static void as_put_io_context(struct request *rq) aic = RQ_IOC(rq)->aic; if (rq_is_sync(rq) && aic) { - spin_lock(&aic->lock); + unsigned long flags; + + spin_lock_irqsave(&aic->lock, flags); set_bit(AS_TASK_IORUNNING, &aic->state); aic->last_end_request = jiffies; - spin_unlock(&aic->lock); + spin_unlock_irqrestore(&aic->lock, flags); } put_io_context(RQ_IOC(rq));