Revision 289454ad26a2d752e04b07234a175feda9ec0f4e authored by Naohiro Aota on 05 January 2015, 16:01:03 UTC, committed by Chris Mason on 03 February 2015, 03:24:51 UTC
After submit_one_bio(), `bio' can go away. However submit_extent_page()
leave `bio' referable if submit_one_bio() failed (e.g. -ENOMEM on OOM).
It will cause invalid paging request when submit_extent_page() is called
next time.

I reproduced ENOMEM case with the following script (need
CONFIG_FAIL_PAGE_ALLOC, and CONFIG_FAULT_INJECTION_DEBUG_FS).

  #!/bin/bash

  dmesgout=dmesg.txt
  start=100000
  end=300000
  step=1000

  # btrfs options
  device=/dev/vdb1
  directory=/mnt/btrfs

  # fault-injection options
  percent=100
  times=3

  mkdir -p $directory || exit 1
  mount -o compress $device $directory || exit 1

  rm -f $directory/file || exit 1
  dd if=/dev/zero of=$directory/file bs=1M count=512 || exit 1

  for interval in `seq $start $step $end`; do
          dmesg -C
          echo 1 > /proc/sys/vm/drop_caches
          sync
          export FAILCMD_TYPE=fail_page_alloc
          ./failcmd.sh -p $percent -t $times -i $interval \
                  --ignore-gfp-highmem=N --ignore-gfp-wait=N --min-order=0 \
                  -- \
                  cat $directory/file > /dev/null
          dmesg > ${dmesgout}
          if grep -q BUG: ${dmesgout}; then
                  cat ${dmesgout}
                  exit 1
          fi
  done

  umount $directory
  exit 0

Signed-off-by: Naohiro Aota <naota@elisp.net>
Tested-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
1 parent de554a4
History
File Mode Size
9p
adfs
affs
afs
autofs4
befs
bfs
btrfs
cachefiles
ceph
cifs
coda
configfs
cramfs
debugfs
devpts
dlm
ecryptfs
efivarfs
efs
exofs
exportfs
ext2
ext3
ext4
f2fs
fat
freevxfs
fscache
fuse
gfs2
hfs
hfsplus
hostfs
hpfs
hppfs
hugetlbfs
isofs
jbd
jbd2
jffs2
jfs
kernfs
lockd
logfs
minix
ncpfs
nfs
nfs_common
nfsd
nilfs2
nls
notify
ntfs
ocfs2
omfs
openpromfs
overlayfs
proc
pstore
qnx4
qnx6
quota
ramfs
reiserfs
romfs
squashfs
sysfs
sysv
ubifs
udf
ufs
xfs
Kconfig -rw-r--r-- 6.0 KB
Kconfig.binfmt -rw-r--r-- 7.3 KB
Makefile -rw-r--r-- 4.1 KB
aio.c -rw-r--r-- 42.8 KB
anon_inodes.c -rw-r--r-- 4.9 KB
attr.c -rw-r--r-- 7.9 KB
bad_inode.c -rw-r--r-- 7.8 KB
binfmt_aout.c -rw-r--r-- 10.8 KB
binfmt_elf.c -rw-r--r-- 60.6 KB
binfmt_elf_fdpic.c -rw-r--r-- 46.9 KB
binfmt_em86.c -rw-r--r-- 2.8 KB
binfmt_flat.c -rw-r--r-- 26.4 KB
binfmt_misc.c -rw-r--r-- 17.7 KB
binfmt_script.c -rw-r--r-- 3.0 KB
binfmt_som.c -rw-r--r-- 7.1 KB
block_dev.c -rw-r--r-- 44.2 KB
buffer.c -rw-r--r-- 88.8 KB
char_dev.c -rw-r--r-- 14.1 KB
compat.c -rw-r--r-- 37.2 KB
compat_binfmt_elf.c -rw-r--r-- 3.7 KB
compat_ioctl.c -rw-r--r-- 45.4 KB
coredump.c -rw-r--r-- 18.1 KB
dcache.c -rw-r--r-- 85.7 KB
dcookies.c -rw-r--r-- 6.9 KB
direct-io.c -rw-r--r-- 37.6 KB
drop_caches.c -rw-r--r-- 1.8 KB
eventfd.c -rw-r--r-- 11.2 KB
eventpoll.c -rw-r--r-- 59.0 KB
exec.c -rw-r--r-- 39.9 KB
fcntl.c -rw-r--r-- 16.6 KB
fhandle.c -rw-r--r-- 6.5 KB
file.c -rw-r--r-- 21.5 KB
file_table.c -rw-r--r-- 8.4 KB
filesystems.c -rw-r--r-- 6.4 KB
fs-writeback.c -rw-r--r-- 40.0 KB
fs_pin.c -rw-r--r-- 1.5 KB
fs_struct.c -rw-r--r-- 3.3 KB
inode.c -rw-r--r-- 50.0 KB
internal.h -rw-r--r-- 3.6 KB
ioctl.c -rw-r--r-- 15.6 KB
libfs.c -rw-r--r-- 27.9 KB
locks.c -rw-r--r-- 67.8 KB
mbcache.c -rw-r--r-- 24.1 KB
mount.h -rw-r--r-- 3.4 KB
mpage.c -rw-r--r-- 19.9 KB
namei.c -rw-r--r-- 111.8 KB
namespace.c -rw-r--r-- 78.4 KB
no-block.c -rw-r--r-- 688 bytes
nsfs.c -rw-r--r-- 3.4 KB
open.c -rw-r--r-- 26.7 KB
pipe.c -rw-r--r-- 25.0 KB
pnode.c -rw-r--r-- 10.1 KB
pnode.h -rw-r--r-- 1.7 KB
posix_acl.c -rw-r--r-- 19.9 KB
proc_namespace.c -rw-r--r-- 7.7 KB
read_write.c -rw-r--r-- 30.4 KB
readdir.c -rw-r--r-- 6.9 KB
select.c -rw-r--r-- 25.4 KB
seq_file.c -rw-r--r-- 21.8 KB
signalfd.c -rw-r--r-- 9.1 KB
splice.c -rw-r--r-- 46.1 KB
stack.c -rw-r--r-- 2.5 KB
stat.c -rw-r--r-- 12.0 KB
statfs.c -rw-r--r-- 5.3 KB
super.c -rw-r--r-- 34.9 KB
sync.c -rw-r--r-- 9.5 KB
timerfd.c -rw-r--r-- 13.0 KB
utimes.c -rw-r--r-- 5.9 KB
xattr.c -rw-r--r-- 22.8 KB

back to top