You are not logged in.
The btrfs file system mount seems to automagically load the btrfs module which is good.
On this system there is no btrfs RAID configured. That is why I am wondering why also these dependencies get automagically loaded:
xor 24576 1 btrfs
raid6_pq 114688 1 btrfs
And dmesg shows that both a raid6 and xor algorighm are being determined during system startup:
[ 0.526784] raid6: sse2x1 gen() 971 MB/s
[ 0.583377] raid6: sse2x1 xor() 1481 MB/s
[ 0.640022] raid6: sse2x2 gen() 1623 MB/s
[ 0.696685] raid6: sse2x2 xor() 1760 MB/s
[ 0.753352] raid6: sse2x4 gen() 2555 MB/s
[ 0.810024] raid6: sse2x4 xor() 1738 MB/s
[ 0.810027] raid6: using algorithm sse2x4 gen() 2555 MB/s
[ 0.810028] raid6: .... xor() 1738 MB/s, rmw enabled
[ 0.810031] raid6: using ssse3x2 recovery algorithm
[ 0.810434] xor: measuring software checksum speed
[ 0.843360] prefetch64-sse: 4558.800 MB/sec
[ 0.876688] generic_sse: 4140.000 MB/sec
[ 0.876691] xor: using function: prefetch64-sse (4558.800 MB/sec)
[ 0.898101] Btrfs loaded, crc32c=crc32c-intel
As long as RAID5 and RAID6 are still highly experimental having potential parity write gaps, shouldn't there be a method (like f.e. kernel flags or module blocking) to skip the raid6 and xor module loading?
In case skipping raid6_pq is possible, how is that best done?
Last edited by probackup-nl (2017-11-15 23:58:34)
Offline
Not possible see https://git.kernel.org/pub/scm/linux/ke … h=v4.13.13
btrfs-y += super.o ctree.o extent-tree.o print-tree.o root-tree.o dir-item.o \
file-item.o inode-item.o inode-map.o disk-io.o \
transaction.o inode.o file.o tree-defrag.o \
extent_map.o sysfs.o struct-funcs.o xattr.o ordered-data.o \
extent_io.o volumes.o async-thread.o ioctl.o locking.o orphan.o \
export.o tree-log.o free-space-cache.o zlib.o lzo.o \
compression.o delayed-ref.o relocation.o delayed-inode.o scrub.o \
reada.o backref.o ulist.o qgroup.o send.o dev-replace.o raid56.o \
uuid-tree.o props.o hash.o free-space-tree.o
The important entry being raid56.o being unconditionally need to make btrfs-y the target for the btrfs module.
/fs/btrfs/raid56.c contains https://git.kernel.org/pub/scm/linux/ke … 13.13#n518 which uses xor_blocks
http://elixir.free-electrons.com/linux/ … /xor.c#L35 from the xor module
it also contains https://git.kernel.org/pub/scm/linux/ke … 3.13#n1899 which uses raid6_2data_recov
http://elixir.free-electrons.com/linux/ … lgos.c#L97 from the raid6_pq module
This is also why https://git.kernel.org/pub/scm/linux/ke … h=v4.13.13 enabling btrfs support in the kernel
config BTRFS_FS
tristate "Btrfs filesystem support"
select CRYPTO
select CRYPTO_CRC32C
select ZLIB_INFLATE
select ZLIB_DEFLATE
select LZO_COMPRESS
select LZO_DECOMPRESS
select RAID6_PQ
select XOR_BLOCKS
select SRCU
selects those other options to ensure the required modules are built.
Offline
In Ubuntu since 4.15.0 it seems possible to reduce the boot latency by passing a kernel param like CONFIG_RAID6_PQ_DEFAULT_ALG="avx2x4"
https://bugs.launchpad.net/ubuntu/+sour … ug/1812728
I have no clue if this patch went upstream.
Offline
Offline