On Mon, Jul 14, 2014 at 07:30:43PM +0200, Jens Axboe wrote: > Why not just makes this: > > local_irq_save(flags); > kcpu = this_put_ptr(...); > ... > > and get rid of the preemption bits, it's a bit redundant now you need to > kill local interrupts anyway. *nod*. I'll add the following cleanup patch, as the first version already got merged into another tree. -ben diff --git a/fs/aio.c b/fs/aio.c index 1c9c5f0..104da62 100644 --- a/fs/aio.c +++ b/fs/aio.c @@ -832,10 +832,8 @@ static void put_reqs_available(struct kioctx *ctx, unsigned nr) struct kioctx_cpu *kcpu; unsigned long flags; - preempt_disable(); - kcpu = this_cpu_ptr(ctx->cpu); - local_irq_save(flags); + kcpu = this_cpu_ptr(ctx->cpu); kcpu->reqs_available += nr; while (kcpu->reqs_available >= ctx->req_batch * 2) { @@ -844,7 +842,6 @@ static void put_reqs_available(struct kioctx *ctx, unsigned nr) } local_irq_restore(flags); - preempt_enable(); } static bool get_reqs_available(struct kioctx *ctx) @@ -853,10 +850,8 @@ static bool get_reqs_available(struct kioctx *ctx) bool ret = false; unsigned long flags; - preempt_disable(); - kcpu = this_cpu_ptr(ctx->cpu); - local_irq_save(flags); + kcpu = this_cpu_ptr(ctx->cpu); if (!kcpu->reqs_available) { int old, avail = atomic_read(&ctx->reqs_available); @@ -876,7 +871,6 @@ static bool get_reqs_available(struct kioctx *ctx) kcpu->reqs_available--; out: local_irq_restore(flags); - preempt_enable(); return ret; } -ben -- "Thought is the essence of where you are now." -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html