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
9p
adfs
affs
afs
autofs
autofs4
befs
bfs
btrfs
cachefiles
ceph
cifs
coda
configfs
cramfs
debugfs
devpts
dlm
ecryptfs
efs
exofs
exportfs
ext2
ext3
ext4
fat
freevxfs
fscache
fuse
gfs2
hfs
hfsplus
hostfs
hpfs
hppfs
hugetlbfs
isofs
jbd
jbd2
jffs2
jfs
lockd
logfs
minix
ncpfs
nfs
nfs_common
nfsd
nilfs2
nls
notify
ntfs
ocfs2
omfs
openpromfs
partitions
proc
qnx4
quota
ramfs
reiserfs
romfs
smbfs
squashfs
sysfs
sysv
ubifs
udf
ufs
xfs
Kconfig -rw-r--r-- 5.4 KB
Kconfig.binfmt -rw-r--r-- 6.4 KB
Makefile -rw-r--r-- 4.1 KB
aio.c -rw-r--r-- 46.2 KB
anon_inodes.c -rw-r--r-- 6.4 KB
attr.c -rw-r--r-- 6.6 KB
bad_inode.c -rw-r--r-- 7.7 KB
binfmt_aout.c -rw-r--r-- 12.5 KB
binfmt_elf.c -rw-r--r-- 53.7 KB
binfmt_elf_fdpic.c -rw-r--r-- 48.7 KB
binfmt_em86.c -rw-r--r-- 2.8 KB
binfmt_flat.c -rw-r--r-- 26.8 KB
binfmt_misc.c -rw-r--r-- 15.1 KB
binfmt_script.c -rw-r--r-- 2.8 KB
binfmt_som.c -rw-r--r-- 7.4 KB
bio-integrity.c -rw-r--r-- 21.0 KB
bio.c -rw-r--r-- 39.2 KB
block_dev.c -rw-r--r-- 42.6 KB
buffer.c -rw-r--r-- 87.5 KB
char_dev.c -rw-r--r-- 13.9 KB
compat.c -rw-r--r-- 56.2 KB
compat_binfmt_elf.c -rw-r--r-- 3.5 KB
compat_ioctl.c -rw-r--r-- 48.4 KB
dcache.c -rw-r--r-- 62.1 KB
dcookies.c -rw-r--r-- 6.8 KB
direct-io.c -rw-r--r-- 35.0 KB
drop_caches.c -rw-r--r-- 1.3 KB
eventfd.c -rw-r--r-- 10.9 KB
eventpoll.c -rw-r--r-- 38.8 KB
exec.c -rw-r--r-- 46.3 KB
fcntl.c -rw-r--r-- 17.3 KB
fifo.c -rw-r--r-- 3.2 KB
file.c -rw-r--r-- 11.7 KB
file_table.c -rw-r--r-- 12.1 KB
filesystems.c -rw-r--r-- 6.3 KB
fs-writeback.c -rw-r--r-- 30.9 KB
fs_struct.c -rw-r--r-- 3.2 KB
generic_acl.c -rw-r--r-- 4.5 KB
inode.c -rw-r--r-- 40.6 KB
internal.h -rw-r--r-- 2.4 KB
ioctl.c -rw-r--r-- 15.7 KB
ioprio.c -rw-r--r-- 5.2 KB
libfs.c -rw-r--r-- 24.1 KB
locks.c -rw-r--r-- 57.7 KB
mbcache.c -rw-r--r-- 16.6 KB
mpage.c -rw-r--r-- 20.0 KB
namei.c -rw-r--r-- 70.5 KB
namespace.c -rw-r--r-- 58.7 KB
nfsctl.c -rw-r--r-- 2.4 KB
no-block.c -rw-r--r-- 663 bytes
open.c -rw-r--r-- 23.7 KB
pipe.c -rw-r--r-- 27.8 KB
pnode.c -rw-r--r-- 9.3 KB
pnode.h -rw-r--r-- 1.1 KB
posix_acl.c -rw-r--r-- 8.4 KB
read_write.c -rw-r--r-- 20.4 KB
read_write.h -rw-r--r-- 542 bytes
readdir.c -rw-r--r-- 6.9 KB
select.c -rw-r--r-- 24.2 KB
seq_file.c -rw-r--r-- 17.9 KB
signalfd.c -rw-r--r-- 7.2 KB
splice.c -rw-r--r-- 47.2 KB
stack.c -rw-r--r-- 2.7 KB
stat.c -rw-r--r-- 10.5 KB
statfs.c -rw-r--r-- 5.2 KB
super.c -rw-r--r-- 25.5 KB
sync.c -rw-r--r-- 9.9 KB
timerfd.c -rw-r--r-- 6.5 KB
utimes.c -rw-r--r-- 5.6 KB
xattr.c -rw-r--r-- 15.6 KB
xattr_acl.c -rw-r--r-- 2.3 KB

back to top