lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 10 Oct 2014 16:23:09 +0200 From: Jan Kara <jack@...e.cz> To: linux-fsdevel@...r.kernel.org Cc: linux-ext4@...r.kernel.org, Dave Chinner <david@...morbit.com>, xfs@....sgi.com, cluster-devel@...hat.com, Steven Whitehouse <swhiteho@...hat.com>, Mark Fasheh <mfasheh@...e.com>, Joel Becker <jlbec@...lplan.org>, ocfs2-devel@....oracle.com, reiserfs-devel@...r.kernel.org, Jeff Mahoney <jeffm@...e.de>, Dave Kleikamp <shaggy@...nel.org>, jfs-discussion@...ts.sourceforge.net, tytso@....edu, viro@...iv.linux.org.uk, Tao Ma <boyu.mt@...bao.com>, Christoph Hellwig <hch@...radead.org>, Roland Dreier <roland@...estorage.com>, Dan Williams <dan.j.williams@...el.com>, Jens Axboe <jaxboe@...ionio.com> Subject: [PATCH] block: Make rq_affinity = 1 work as expected From: Tao Ma <boyu.mt@...bao.com> Commit 5757a6d76c introduced a new rq_affinity = 2 so as to make the request completed in the __make_request cpu. But it makes the old rq_affinity = 1 not work any more. The root cause is that if the 'cpu' and 'req->cpu' is in the same group and cpu != req->cpu, ccpu will be the same as group_cpu, so the completion will be excuted in the 'cpu' not 'group_cpu'. This patch fix problem by simpling removing group_cpu and the codes are more explicit now. If ccpu == cpu, we complete in cpu, otherwise we raise_blk_irq to ccpu. Cc: Christoph Hellwig <hch@...radead.org> Cc: Roland Dreier <roland@...estorage.com> Cc: Dan Williams <dan.j.williams@...el.com> Cc: Jens Axboe <jaxboe@...ionio.com> Signed-off-by: Tao Ma <boyu.mt@...bao.com> Reviewed-by: Shaohua Li <shaohua.li@...el.com> Signed-off-by: Jens Axboe <jaxboe@...ionio.com> --- block/blk-softirq.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/block/blk-softirq.c b/block/blk-softirq.c index 475fab809a80..487addc85bb5 100644 --- a/block/blk-softirq.c +++ b/block/blk-softirq.c @@ -103,7 +103,7 @@ static struct notifier_block __cpuinitdata blk_cpu_notifier = { void __blk_complete_request(struct request *req) { - int ccpu, cpu, group_cpu = NR_CPUS; + int ccpu, cpu; struct request_queue *q = req->q; unsigned long flags; @@ -117,14 +117,12 @@ void __blk_complete_request(struct request *req) */ if (test_bit(QUEUE_FLAG_SAME_COMP, &q->queue_flags) && req->cpu != -1) { ccpu = req->cpu; - if (!test_bit(QUEUE_FLAG_SAME_FORCE, &q->queue_flags)) { + if (!test_bit(QUEUE_FLAG_SAME_FORCE, &q->queue_flags)) ccpu = blk_cpu_to_group(ccpu); - group_cpu = blk_cpu_to_group(cpu); - } } else ccpu = cpu; - if (ccpu == cpu || ccpu == group_cpu) { + if (ccpu == cpu) { struct list_head *list; do_local: list = &__get_cpu_var(blk_cpu_done); -- 1.8.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists