Fsck BTRFS mkinitcpio

I was trying to better understand BTRFS.

I have heard rumors that when the hooks section contains ' fsck' in /etc/mkinitcpio.conf, it can corrupt the BTRFS filesystem. I noticed it being present in my Garuda setup. Are these rumors true? Should I do something about it?

Sources / explained in:
Video, around the 45 minute Mark: https://youtu.be/Xynotc9BKe8

A Manjaro forum post, where it says: "One possible reason might be because of btrfs. btrfs filesystems should not be checked with fsck before mounting, because btrfs has its own internal logic for that."

Without links to corroborating information I’d take any rumour “with a pinch of salt”.

The Arch wiki makes no mention of this, and instead says:

5 Likes

Using fsck on btrfs is pointless, and you can check with:
cat (which fsck.btrfs)
and this should be the output:

#!/bin/sh -f
#
# Copyright (c) 2013 SUSE
#
# copied from fsck.xfs
# Copyright (c) 2006 Silicon Graphics, Inc.  All Rights Reserved.
#

# fsck.btrfs is a type of utility that should exist for any filesystem and is
# called during system setup when the corresponding /etc/fstab entries contain
# non-zero value for fs_passno. (See fstab(5) for more.)
#
# Traditional filesystems need to run their respective fsck utility in case the
# filesystem was not unmounted cleanly and the log needs to be replayed before
# mount. This is not needed for BTRFS. You should set fs_passno to 0.
#
# If you wish to check the consistency of a BTRFS filesystem or repair a
# damaged filesystem, see btrfs(8) subcommand 'check'. By default the
# filesystem consistency is checked, the repair mode is enabled via --repair
# option (use with care!).

AUTO=false
while getopts ":aApy" c
do
case $c in
a|A|p|y)        AUTO=true;;
esac
done
shift $(($OPTIND - 1))
eval DEV=\${$#}
if [ ! -e $DEV ]; then
echo "$0: $DEV does not exist"
exit 8
fi
if ! $AUTO; then
echo "If you wish to check the consistency of a BTRFS filesystem or"
echo "repair a damaged filesystem, see btrfs(8) subcommand 'check'."
fi
exit 0
1 Like

That might be true, but how is it related to including fsck as a mkinitcpio hook?

2 Likes

It does nothing but waste a few CPU cycles, either on mount with /etc/fstab or as a mkinitcpio hook. As such it cannot corrupt a btrfs filesystem.

2 Likes

Guys, thank you for your explanation.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.