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
History
File Mode Size
Kconfig -rw-r--r-- 898 bytes
Makefile -rw-r--r-- 416 bytes
afs.h -rw-r--r-- 6.0 KB
afs_cm.h -rw-r--r-- 1.2 KB
afs_fs.h -rw-r--r-- 2.3 KB
afs_vl.h -rw-r--r-- 3.6 KB
cache.c -rw-r--r-- 10.8 KB
callback.c -rw-r--r-- 11.4 KB
cell.c -rw-r--r-- 10.3 KB
cmservice.c -rw-r--r-- 13.2 KB
dir.c -rw-r--r-- 27.1 KB
file.c -rw-r--r-- 8.6 KB
flock.c -rw-r--r-- 15.8 KB
fsclient.c -rw-r--r-- 44.1 KB
inode.c -rw-r--r-- 12.1 KB
internal.h -rw-r--r-- 30.9 KB
main.c -rw-r--r-- 4.2 KB
misc.c -rw-r--r-- 2.3 KB
mntpt.c -rw-r--r-- 7.5 KB
netdevices.c -rw-r--r-- 1.5 KB
proc.c -rw-r--r-- 17.0 KB
rxrpc.c -rw-r--r-- 20.1 KB
security.c -rw-r--r-- 8.9 KB
server.c -rw-r--r-- 7.9 KB
super.c -rw-r--r-- 12.3 KB
vlclient.c -rw-r--r-- 5.4 KB
vlocation.c -rw-r--r-- 17.7 KB
vnode.c -rw-r--r-- 24.1 KB
volume.c -rw-r--r-- 9.9 KB
write.c -rw-r--r-- 18.4 KB

back to top