Naohiro Aota
289454ad26
btrfs: clear bio reference after submit_one_bio()
...
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>
2015-02-02 19:24:51 -08:00
..
2015-01-21 18:02:04 -08:00
2014-06-09 17:20:42 -07:00
2014-10-02 16:06:19 +02:00
2014-09-17 13:39:01 -07:00
2015-01-14 19:23:47 +01:00
2015-01-14 19:23:47 +01:00
2015-02-02 18:39:16 -08:00
2014-11-25 06:01:11 -08:00
2013-11-24 16:33:41 -07:00
2014-12-12 11:15:23 -08:00
2014-11-30 09:33:51 -08:00
2015-01-22 05:42:23 -08:00
2015-02-02 19:24:48 -08:00
2015-02-02 18:39:16 -08:00
2014-01-28 13:20:09 -08:00
2014-06-09 17:20:48 -07:00
2014-06-09 17:20:48 -07:00
2015-01-21 18:06:48 -08:00
2012-12-12 17:15:41 -05:00
2014-11-20 17:20:07 -08:00
2015-02-02 19:24:48 -08:00
2014-12-12 18:07:21 +01:00
2014-09-17 13:37:12 -07:00
2015-02-02 19:24:51 -08:00
2015-01-21 18:02:04 -08:00
2014-11-21 11:59:54 -08:00
2014-06-19 14:20:55 -07:00
2015-02-02 19:24:48 -08:00
2014-11-04 06:59:04 -08:00
2014-11-25 07:41:23 -08:00
2015-01-21 17:36:52 -08:00
2014-12-02 18:35:09 -08:00
2014-10-14 10:51:22 +02:00
2014-01-28 13:20:31 -08:00
2015-01-21 18:02:05 -08:00
2014-12-02 18:35:09 -08:00
2015-02-02 18:39:16 -08:00
2014-12-12 11:15:23 -08:00
2014-01-28 13:20:31 -08:00
2014-11-19 10:34:35 -08:00
2014-11-19 10:34:35 -08:00
2014-11-30 09:33:51 -08:00
2014-06-09 17:20:49 -07:00
2012-12-11 13:31:30 -05:00
2014-11-21 11:59:56 -08:00
2014-11-21 11:59:56 -08:00
2014-09-17 13:37:12 -07:00
2014-10-02 17:14:50 +02:00
2013-05-06 15:55:23 -04:00
2014-01-28 13:20:24 -08:00
2014-01-28 13:20:24 -08:00
2015-01-21 18:22:37 -08:00
2014-08-15 07:43:14 -07:00
2015-01-21 18:06:49 -08:00
2015-01-21 18:06:47 -08:00
2015-01-21 18:06:48 -08:00
2014-12-12 18:07:22 +01:00
2014-06-09 17:20:40 -07:00
2015-02-02 19:24:50 -08:00
2015-02-02 18:39:07 -08:00
2013-05-06 15:55:23 -04:00
2015-01-21 18:02:04 -08:00
2015-02-02 19:24:49 -08:00
2014-09-17 13:37:59 -07:00
2015-01-21 17:36:52 -08:00
2015-01-21 17:36:52 -08:00
2014-06-09 17:20:40 -07:00
2015-02-02 18:39:07 -08:00
2014-09-19 06:57:51 -07:00
2014-01-29 07:06:27 -08:00
2014-08-15 07:43:19 -07:00
2014-09-17 13:38:02 -07:00
2015-02-02 19:24:39 -08:00
2015-01-21 18:06:49 -08:00
2014-11-20 17:20:07 -08:00
2014-01-25 23:58:18 -05:00
2014-11-30 09:33:51 -08:00