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>
$(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))
-#!/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