I planned my openSUSE Leap installations ext4-only from the get-go, starting with overriding YaST’s partitioning recommendations during my first Leap installation: no btrfs, one ext4 and one swap partition, that’s it.
I then searched for »btrfs« in YaST’s Software Management module, but I was able to delete — and then set to »taboo« — only btrfsprogs:
rig:~ ▶ zypper ll | grep -i btrfs
31 | btrfsprogs | package | (any)
Two RPMs still seem to be necessary in order to satisfy the dependencies of YaST and several filesystem utilities on my main rig:
rig:~ ▶ rpm -qa | grep -i btrfs
libbtrfs0-4.15-lp150.2.3.1.x86_64
btrfsprogs-udev-rules-4.15-lp150.2.3.1.noarch
Another thing to do away with are the btrfs-related systemd services and timers — I masked/disabled all of them:
rig:~/Documents/rig/lp150 ▶ systemctl list-unit-files --all | grep -i btrfs
btrfs-balance.service masked
btrfs-defrag.service masked
btrfs-scrub.service masked
btrfs-trim.service masked
btrfsmaintenance-refresh.service masked
btrfs-balance.timer masked
btrfs-defrag.timer masked
btrfs-scrub.timer masked
rig:~ ▶ systemctl list-timers --all
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sun 2019-04-28 00:00:00 CEST 15h left Sat 2019-04-27 07:01:59 CEST 1h 53min ago logrotate.timer logrotate.service
Sun 2019-04-28 07:17:04 CEST 22h left Sat 2019-04-27 07:17:04 CEST 1h 38min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
n/a n/a n/a n/a backup-rpmdb.timer
**n/a n/a n/a n/a btrfs-balance.timer **
**n/a n/a n/a n/a btrfs-scrub.timer **
n/a n/a n/a n/a check-battery.timer
n/a n/a n/a n/a fstrim.timer
Finally, I’m using a custom initrd (Initial RamDisk, loaded by GRUB and used by the kernel for the first stages of booting into the system). I generate mine on the command line as root:
dracut --hostonly --force --no-compress
… using the following rules in my own dracut sub-config file:
**rig:~ # **cat /etc/dracut.conf.d/01-rig-m.conf
hostonly="yes"
compress="cat"
omit_dracutmodules+="network kernel-network-modules ifcfg img-lib cifs fcoe fcoe-uefi rdma multipath iscsi qemu lvm mdraid dm dmraid cdrom pollcdrom plymouth **btrfs** wacom convertfs wicked ipv6 mtp-probe"
omit_drivers+="usb-storage uas ums-* snd soundcore snd-* hid-wiimote wacom hv_vmbus rmi_core dm-mod iscsi_if iscsi_tcp dm_multipath parport pcmcia jsm"
**WARNING: **Do not copy the rules above without first checking whether of not your system might need one of those modules for booting! Because I happen to boot ext4-only from a local SSD (and not, say, over IPv6 connections into a clustered/distributed/virtual/logical volume), I can afford to omit a lot of default SuSE/dracut stuff. Your mileage may vary (YMMV). Maybe you like the slick, graphical boot Plymouth provides, or you need wicked or NetworkManager for WLAN/DHCP connectivity (I don’t, I use systemd-networkd with one router-reserved static IPv4 address). And who, really, needs sound in their initrd’s for booting?

What all this effort provides me with is:
- peace of mind
- ridiculously fast booting (fastest boot was 1.211s according to systemd-analyze, average times are about 1.3s)
- a growing knowledge about Linux and Leap, systemd, dracut, wicked/plymouth/samba (and how to avoid those)
- a robust, deterministic, compact Linux installation with a minimal surface of attack (e.g., no listening connections except for web browsers and — rarely — ssh)
- simple, decades-old, well-tested backup strategies (mostly incremental+differential) which don’t rely on arguably flaky btrfs snapshots
Happy learning and optimizing. Cheers!