Hi All,

I have been encountering consistent btrfs filesystem crashes when
using cp –reflink=always on a large file and modifying it. I believe
that the test file needs to be fairly large as I was not able to
reproduce with smaller files. The filesystem size is 45GB and file
size is 10GB.

Thanks,
Nik

---- Trace:
[240213.884228] ------------[ cut here ]------------
[240213.884232] kernel BUG at
/build/buildd/linux-3.0.0/fs/btrfs/delayed-inode.c:1693!
[240213.884235] invalid opcode: 0000 [#1] SMP
[240213.884237] Modules linked in: bnep rfcomm bluetooth vboxnetadp
vboxnetflt vboxdrv binfmt_misc nfsd nfs lockd fscache auth_rpcgss
nfs_acl sunrpc vesafb snd_hda_codec_analog snd_usb_audio
snd_usbmidi_lib joydev snd_hda_intel snd_hda_codec snd_hwdep snd_pcm
snd_seq_midi snd_rawmidi snd_seq_midi_event dell_wmi sparse_keymap
ppdev snd_seq snd_timer snd_seq_device nvidia(P) dcdbas wmi parport_pc
psmouse snd serio_raw soundcore snd_page_alloc i7core_edac edac_core
lp parport usbhid hid firewire_ohci firewire_core crc_itu_t tg3 btrfs
zlib_deflate libcrc32c
[240213.884266]
[240213.884269] Pid: 4703, comm: cp Tainted: P
3.0.0-13-generic #22-Ubuntu Dell Inc. Precision WorkStation T3500
/0XPDFK
[240213.884273] EIP: 0060:[<f8164ca0>] EFLAGS: 00010286 CPU: 0
[240213.884289] EIP is at btrfs_delayed_update_inode+0x100/0x110 [btrfs]
[240213.884291] EAX: ffffffe4 EBX: eb555e08 ECX: 00018000 EDX: 00018000
[240213.884293] ESI: eb4d8db0 EDI: eb41089c EBP: f1e0dde8 ESP: f1e0ddc8
[240213.884295]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
[240213.884297] Process cp (pid: 4703, ti=f1e0c000 task=eba03fc0
task.ti=f1e0c000)
[240213.884299] Stack:
[240213.884300]  00018000 00000000 00018000 edd74800 eb555e34 eb41089c
edd74800 00000000
[240213.884305]  f1e0de10 f81202a8 00000001 00000000 eb40c11c f6b18150
eb4d8db0 eb41089c
[240213.884309]  edd74800 00000000 f1e0df04 f8148e16 067ff000 00000001
02599000 00000000
[240213.884314] Call Trace:
[240213.884328]  [<f81202a8>] btrfs_update_inode+0x58/0x170 [btrfs]
[240213.884342]  [<f8148e16>] btrfs_ioctl_clone+0x936/0xc60 [btrfs]
[240213.884357]  [<f814cb30>] btrfs_ioctl+0x570/0x5e0 [btrfs]
[240213.884371]  [<f814c5c0>] ? btrfs_ioctl_trans_end+0x60/0x60 [btrfs]
[240213.884375]  [<c11380ea>] file_ioctl+0x4a/0x150
[240213.884377]  [<c11384ba>] do_vfs_ioctl+0x2ca/0x2d0
[240213.884380]  [<c113852f>] sys_ioctl+0x6f/0x80
[240213.884383]  [<c152cc24>] syscall_call+0x7/0xb
[240213.884385] Code: 46 24 89 0c 24 81 c2 b0 00 00 00 89 4d e8 e8 28
27 fa ff 8b 4d e8 85 c0 75 11 89 4b 08 c7 43 0c 00 00 00 00 e9 49 ff
ff ff 66 90 <0f> 0b 8d b4 26 00 00 00 00 8d bc 27 00 00 00 00 55 89 e5
53 3e
[240213.884411] EIP: [<f8164ca0>]
btrfs_delayed_update_inode+0x100/0x110 [btrfs] SS:ESP 0068:f1e0ddc8
[240213.884500] ---[ end trace 81327a383209814e ]---

System: 3.0.0-13-generic #22-Ubuntu SMP, 32-bit,
http://www.dell.com/us/business/p/precision-t3500/pd, Xeon W3503,
--- other info
sudo hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
        Model Number:       WDC WD2500AAJS-75M0A0
        Serial Number:      WD-WMAV2W142610
        Firmware Revision:  02.03E02
        Transport:          Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5
Standards:
        Supported: 8 7 6 5
        Likely used: 8
Configuration:
        Logical         max     current
        cylinders       16383   16383
        heads           16      16
        sectors/track   63      63
        --
        CHS current addressable sectors:   16514064
        LBA    user addressable sectors:  268435455
        LBA48  user addressable sectors:  488281250
        Logical/Physical Sector size:           512 bytes
        device size with M = 1024*1024:      238418 MBytes
        device size with M = 1000*1000:      250000 MBytes (250 GB)
        cache/buffer size  = 8192 KBytes
Capabilities:
        LBA, IORDY(can be disabled)
        Queue depth: 32
        Standby timer values: spec'd by Standard, with device specific minimum
        R/W multiple sector transfer: Max = 16  Current = 8
        Recommended acoustic management value: 128, current value: 128
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4
             Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
        Enabled Supported:
           *    SMART feature set
                Security Mode feature set
           *    Power Management feature set
           *    Write cache
           *    Look-ahead
           *    Host Protected Area feature set
           *    WRITE_BUFFER command
           *    READ_BUFFER command
           *    NOP cmd
           *    DOWNLOAD_MICROCODE
                Power-Up In Standby feature set
           *    SET_FEATURES required to spinup after power up
                SET_MAX security extension
           *    Automatic Acoustic Management feature set
           *    48-bit Address feature set
           *    Device Configuration Overlay feature set
           *    Mandatory FLUSH_CACHE
           *    FLUSH_CACHE_EXT
           *    SMART error logging
           *    SMART self-test
           *    General Purpose Logging feature set
           *    64-bit World wide name
           *    Segmented DOWNLOAD_MICROCODE
           *    Gen1 signaling speed (1.5Gb/s)
           *    Gen2 signaling speed (3.0Gb/s)
           *    Native Command Queueing (NCQ)
           *    Host-initiated interface power management
           *    Phy event counters
                DMA Setup Auto-Activate optimization
                Device-initiated interface power management
           *    Software settings preservation
           *    SMART Command Transport (SCT) feature set
           *    SCT Long Sector Access (AC1)
           *    SCT LBA Segment Access (AC2)
           *    SCT Features Control (AC4)
           *    SCT Data Tables (AC5)
                unknown 206[12] (vendor specific)
                unknown 206[13] (vendor specific)
Security:
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
                frozen
        not     expired: security count
                supported: enhanced erase
        56min for SECURITY ERASE UNIT. 56min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 50014ee05791e0e0
        NAA             : 5
        IEEE OUI        : 0014ee
        Unique ID       : 05791e0e0
Checksum: correct


Here is the script that you can use to try reproduce. On my system it
crashes within less than 100 iterations.

#!/bin/bash

#$1 is a directory on a btrfs filesystem

src=$1/test/src
dst=$1/test/dst
srcfile=$src/test.tar
dstfile=$dst/test.tar

mkdir -p $src
mkdir -p $dst

filesize=100MB

#build a 10GB file from a smaller download. You can twaek filesize and
the loop below for lower bandwidth
if [ ! -f $srcfile ]; then
        cd $src
        if [ ! -f $srcfile.dl ]; then
                wget http://download.thinkbroadband.com/${filesize}.zip
--output-document=$srcfile.dl
        fi
        rm -rf tarbase
        mkdir tarbase
        for  i in {1..100}; do
                cp --reflink=always $srcfile.dl tarbase/$i.dl
        done
        tar -cvf $srcfile tarbase
        rm -rf tarbase
fi

cat <<END > $src/FileTest.java
import java.io.IOException;
import java.io.RandomAccessFile;
public class FileTest {
    public static void main(String args[]) throws IOException {
        RandomAccessFile f = new RandomAccessFile(args[0], "rws");

        f.seek(50000);
        f.writeBytes("DEADBEEF");
        f.close();
    }
}
END

cd $src
javac FileTest.java

for i in {1..100000}; do
        echo -n "$i."
        cp --reflink=always $srcfile $dstfile
        java FileTest $dstfile-$i.tst
        sleep 1
        rm $dstfile-$i.tst
done
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to