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
Raw File
README.txt
		       ================================
		       Fujitsu FR-V LINUX DOCUMENTATION
		       ================================

This directory contains documentation for the Fujitsu FR-V CPU architecture
port of Linux.

The following documents are available:

 (*) features.txt

     A description of the basic features inherent in this architecture port.


 (*) configuring.txt

     A summary of the configuration options particular to this architecture.


 (*) booting.txt

     A description of how to boot the kernel image and a summary of the kernel
     command line options.


 (*) gdbstub.txt

     A description of how to debug the kernel using GDB attached by serial
     port, and a summary of the services available.


 (*) mmu-layout.txt

     A description of the virtual and physical memory layout used in the
     MMU linux kernel, and the registers used to support it.


 (*) gdbinit

     An example .gdbinit file for use with GDB. It includes macros for viewing
     MMU state on the FR451. See mmu-layout.txt for more information.


 (*) clock.txt

     A description of the CPU clock scaling interface.


 (*) atomic-ops.txt

     A description of how the FR-V kernel's atomic operations work.
back to top