You are not logged in.

#1 2017-11-15 23:56:05

probackup-nl
Member
From: Delft
Registered: 2017-11-15
Posts: 83
Website

btrfs without raid: how to skip raid6 algorithm detection during boot?

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

#2 2017-11-16 00:35:29

loqs
Member
Registered: 2014-03-06
Posts: 17,324

Re: btrfs without raid: how to skip raid6 algorithm detection during boot?

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

#3 2020-04-17 23:30:38

probackup-nl
Member
From: Delft
Registered: 2017-11-15
Posts: 83
Website

Re: btrfs without raid: how to skip raid6 algorithm detection during boot?

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

#4 2020-04-17 23:48:50

loqs
Member
Registered: 2014-03-06
Posts: 17,324

Re: btrfs without raid: how to skip raid6 algorithm detection during boot?

Offline

Board footer

Powered by FluxBB