Revision be14eb619108fa8b7120eb2c42d66d5f623ae10e authored by Brian King on 10 September 2010, 07:03:21 UTC, committed by Jens Axboe on 10 September 2010, 07:03:21 UTC
While testing CPU DLPAR, the following problem was discovered. We were DLPAR removing the first CPU, which in this case was logical CPUs 0-3. CPUs 0-2 were already marked offline and we were in the process of offlining CPU 3. After marking the CPU inactive and offline in cpu_disable, but before the cpu was completely idle (cpu_die), we ended up in __make_request on CPU 3. There we looked at the topology map to see which CPU to complete the I/O on and found no CPUs in the cpu_sibling_map. This resulted in the block layer setting the completion cpu to be NR_CPUS, which then caused an oops when we tried to complete the I/O. Fix this by sanity checking the value we return from blk_cpu_to_group to be a valid cpu value. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
1 parent edce682
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 16.5 KB |
Makefile | -rw-r--r-- | 1.8 KB |
act_api.c | -rw-r--r-- | 23.5 KB |
act_gact.c | -rw-r--r-- | 5.4 KB |
act_ipt.c | -rw-r--r-- | 7.4 KB |
act_mirred.c | -rw-r--r-- | 6.8 KB |
act_nat.c | -rw-r--r-- | 7.3 KB |
act_pedit.c | -rw-r--r-- | 6.2 KB |
act_police.c | -rw-r--r-- | 10.0 KB |
act_simple.c | -rw-r--r-- | 5.2 KB |
act_skbedit.c | -rw-r--r-- | 5.7 KB |
cls_api.c | -rw-r--r-- | 13.7 KB |
cls_basic.c | -rw-r--r-- | 6.4 KB |
cls_cgroup.c | -rw-r--r-- | 7.3 KB |
cls_flow.c | -rw-r--r-- | 15.9 KB |
cls_fw.c | -rw-r--r-- | 8.3 KB |
cls_route.c | -rw-r--r-- | 12.2 KB |
cls_rsvp.c | -rw-r--r-- | 761 bytes |
cls_rsvp.h | -rw-r--r-- | 14.7 KB |
cls_rsvp6.c | -rw-r--r-- | 768 bytes |
cls_tcindex.c | -rw-r--r-- | 11.7 KB |
cls_u32.c | -rw-r--r-- | 16.6 KB |
em_cmp.c | -rw-r--r-- | 2.1 KB |
em_meta.c | -rw-r--r-- | 21.3 KB |
em_nbyte.c | -rw-r--r-- | 1.9 KB |
em_text.c | -rw-r--r-- | 3.7 KB |
em_u32.c | -rw-r--r-- | 1.4 KB |
ematch.c | -rw-r--r-- | 14.5 KB |
sch_api.c | -rw-r--r-- | 40.4 KB |
sch_atm.c | -rw-r--r-- | 19.1 KB |
sch_blackhole.c | -rw-r--r-- | 1.2 KB |
sch_cbq.c | -rw-r--r-- | 47.5 KB |
sch_drr.c | -rw-r--r-- | 11.4 KB |
sch_dsmark.c | -rw-r--r-- | 11.2 KB |
sch_fifo.c | -rw-r--r-- | 4.4 KB |
sch_generic.c | -rw-r--r-- | 20.5 KB |
sch_gred.c | -rw-r--r-- | 13.3 KB |
sch_hfsc.c | -rw-r--r-- | 40.7 KB |
sch_htb.c | -rw-r--r-- | 41.9 KB |
sch_ingress.c | -rw-r--r-- | 3.2 KB |
sch_mq.c | -rw-r--r-- | 5.7 KB |
sch_multiq.c | -rw-r--r-- | 9.3 KB |
sch_netem.c | -rw-r--r-- | 15.3 KB |
sch_prio.c | -rw-r--r-- | 8.4 KB |
sch_red.c | -rw-r--r-- | 7.9 KB |
sch_sfq.c | -rw-r--r-- | 14.2 KB |
sch_tbf.c | -rw-r--r-- | 10.4 KB |
sch_teql.c | -rw-r--r-- | 12.0 KB |
Computing file changes ...