btrfs-progs: scan devices in preinit instead of init script 9646/head
authorKarel Kočí <karel.koci@nic.cz>
Mon, 5 Aug 2019 11:47:17 +0000 (13:47 +0200)
committerJosef Schlehofer <pepe.schlehofer@gmail.com>
Tue, 6 Aug 2019 07:59:45 +0000 (09:59 +0200)
There is no gain to do device scan in init. Commonly we want to always
scan BTRFS devices to ensure that after boot raids are correctly linked.
It should be done before any init script tries to mount any raid FS.

Comparing init scripts and preinit scripts there are I think two primary
considerations. First is if user is expected to restart/reload/stop
given service on will. I think that there is no such reason for this as
user can easily enough just call btrfs utility it self. Second
consideration is if it makes sense to have it optional. This means if we
want to have ability to enable and disable given service. I think that
there is no such need in this case. It is pretty much doing nothing if
you don't have BTRFS FS connected and when you have you probably want to
scan it.

Signed-off-by: Karel Kočí <karel.koci@nic.cz>
utils/btrfs-progs/Makefile
utils/btrfs-progs/files/btrfs-scan.init

index 626163c590a2f3253ce433f57a3b7a4220f57f27..a9f5be047099d0312de8eb69d01fcb41a2a6bde6 100644 (file)
@@ -79,8 +79,8 @@ define Package/btrfs-progs/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/btrfs.box $(1)/usr/bin/btrfs
        $(foreach prog,$(boxprogs),$(LN) btrfs $(1)/usr/bin/$(prog);)
        $(foreach prog,$(progs),$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(prog) $(1)/usr/bin/;)
-       $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/btrfs-scan.init $(1)/etc/init.d/btrfs-scan
+       $(INSTALL_DIR) $(1)/lib/preinit
+       $(INSTALL_BIN) ./files/btrfs-scan.init $(1)/lib/preinit/85_btrfs_scan
 endef
 
 $(eval $(call BuildPackage,btrfs-progs))
index 762e0b84079f1a6e6e9ad0568020f22b756c0959..608d3d6c59b0c861debbb049e515e84f69ba6692 100644 (file)
@@ -1,9 +1,7 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2014 OpenWrt.org
+#!/bin/sh
 
-START=19
-
-start() {
-       grep -q btrfs /proc/filesystems && /usr/bin/btrfs device scan
+preinit_btrfs_scan() {
+       grep -vq btrfs /proc/filesystems || btrfs device scan
 }
 
+boot_hook_add preinit_main preinit_btrfs_scan