Hello! I just got Slate 7 and was hoping to use it as a backup server to receive Btrfs snapshots to external HDD. However it seems like there's some issue with Btrfs' implementation since FW version 4.7.2.
Everything worked with out of the box on 4.7.1 but broke after upgrade to 4.7.3. I also checked 4.7.2 and this version is broken too.
You can find full command list to reproduce the problem below, but basically the problem boils down to the kernel module not been able to load:
On 4.7.2 and 4.7.3:
root@GL-BE3600:~# opkg install btrfs-progs
root@GL-BE3600:~# lsmod | grep btrfs
root@GL-BE3600:~# insmod btrfs
failed to insert /lib/modules/5.4.213/btrfs.ko
root@GL-BE3600:~# lsmod | grep btrfs
root@GL-BE3600:~# dmesg | tail -4
[ 2166.066041] btrfs: Unknown symbol __page_file_index (err -2)
[ 2166.067053] btrfs: Unknown symbol add_swap_extent (err -2)
[ 2596.513307] btrfs: Unknown symbol __page_file_index (err -2)
[ 2596.514047] btrfs: Unknown symbol add_swap_extent (err -2)
On 4.7.1:
root@GL-BE3600:~# lsmod | grep btrfs
btrfs 991232 0
libcrc32c 16384 5 btrfs,act_csum,openvswitch,nf_nat,nf_conntrack
raid6_pq 102400 1 btrfs
xor 16384 1 btrfs
zstd_compress 176128 2 zstd,btrfs
zstd_decompress 49152 2 zstd,btrfs
root@GL-BE3600:~# dmesg
<...>
[ 2241.804930] kmodloader: loading kernel modules from /etc/modules.d/*
[ 2241.880220] Key type encrypted registered
[ 2241.937444] Btrfs loaded, crc32c=crc32c-generic
[ 2241.945148] kmodloader: done loading kernel modules from /etc/modules.d/*
<...>
Full command list to reproduce the problem:
root@GL-BE3600:~# opkg update
root@GL-BE3600:~# opkg install btrfs-progs wipefs
root@GL-BE3600:~# dd if=/dev/zero of=test bs=1M count=200
root@GL-BE3600:~# losetup -f test
root@GL-BE3600:~# losetup -a
/dev/loop0: [0020]:1169 (/root/test)
root@GL-BE3600:~# mkfs.btrfs /dev/loop0
btrfs-progs v6.5.1
See https://btrfs.readthedocs.io for more information.
NOTE: several default settings have changed in version 5.15, please make sure
this does not affect your deployments:
- DUP for metadata (-m dup)
- enabled no-holes (-O no-holes)
- enabled free-space-tree (-R free-space-tree)
Label: (null)
UUID: 3bc1ff61-0e52-4189-bfce-26b54720851f
Node size: 16384
Sector size: 4096
Filesystem size: 200.00MiB
Block group profiles:
Data: single 8.00MiB
Metadata: DUP 32.00MiB
System: DUP 8.00MiB
SSD detected: yes
Zoned device: no
Incompat features: extref, skinny-metadata, no-holes, free-space-tree
Runtime features: free-space-tree
Checksum: crc32c
Number of devices: 1
Devices:
ID SIZE PATH
1 200.00MiB /dev/loop0
WARNING: failed to open /dev/btrfs-control, skipping device registration: No such file or directory
root@GL-BE3600:~# mount -t btrfs /dev/loop0 /mnt
mount: mounting /dev/loop0 on /mnt failed: No such device
root@GL-BE3600:~# ls -l /dev/loop0
brw------- 1 root root 7, 0 Jul 2 21:42 /dev/loop0
root@GL-BE3600:~# wipefs /dev/loop0
DEVICE OFFSET TYPE UUID LABEL
loop0 0x10040 btrfs 3bc1ff61-0e52-4189-bfce-26b54720851f
root@GL-BE3600:~# lsmod | grep btrfs
root@GL-BE3600:~# insmod btrfs
failed to insert /lib/modules/5.4.213/btrfs.ko
root@GL-BE3600:~# lsmod | grep btrfs
root@GL-BE3600:~# dmesg | tail -4
[ 2166.066041] btrfs: Unknown symbol __page_file_index (err -2)
[ 2166.067053] btrfs: Unknown symbol add_swap_extent (err -2)
[ 2596.513307] btrfs: Unknown symbol __page_file_index (err -2)
[ 2596.514047] btrfs: Unknown symbol add_swap_extent (err -2)
root@GL-BE3600:~# losetup -d /dev/loop0
root@GL-BE3600:~# rm test
Tested firmware versions:
Version: 4.7.1
Firmware Type: release1
Update Time: 2025-03-07 09:22:05 (UTC+00:00)
OpenWrt Version: OpenWrt 23.05-SNAPSHOT r0-3601c2a49
Kernel Version: 5.4.213
Version: 4.7.2
Firmware Type: release4
Update Time: 2025-05-29 03:27:03 (UTC+00:00)
OpenWrt Version: OpenWrt 23.05-SNAPSHOT r0-3601c2a49
Kernel Version: 5.4.213
Version: 4.7.3
Firmware Type: release1
Update Time: 2025-06-03 05:22:02 (UTC+00:00)
OpenWrt Version: OpenWrt 23.05-SNAPSHOT r0-3601c2a49
Kernel Version: 5.4.213