kmodloader: fix and optimize loading of failed modules
authorPavel Merzlyakov <pavel.merzlyakov@gmail.com>
Mon, 18 Mar 2019 10:53:01 +0000 (12:53 +0200)
committerStijn Tintel <stijn@linux-ipv6.be>
Sun, 7 Apr 2019 16:33:04 +0000 (19:33 +0300)
commit5130fa4d9c5d15d643506f906927b209d7690a83
treebee1410a3ace9ec1faebe8b1fbeb333fdfa27742
parenta782779552a0d68e3bb588e3039eb95da15ec7b0
kmodloader: fix and optimize loading of failed modules

1) Restore functionality which was lost in commit 876c7f5b.
   Again at boot time kmodloader can load all modules (/etc/modules.d/*)
   even if dependency information is completely missing.
   This functionality is important in case of hidden dependency (not symbol dependency).
   For example, in kernel 4.4.60 is hidden dependency between nf_nat_ipv6 and nf_conntrack_ipv6.
   We can't load nf_nat_ipv6 before nf_conntrack_ipv6 and modinfo do not show this dependency.
   Two sequential load attempts of nf_nat_ipv6 may not be enough (in my case it's definitely not enough).
   nf_nat_ipv4 has a similar problem.

2) Reduce count of attempts to load failed modules.
   Now kmodloader try to load failed modules after all others are loaded.

main_loader: Count of failed and successful attempts to load nf_nat_ipv6.ko (kernel 4.4.60) depend on ubox version:
   COMMIT        FAILED      SUCCESSFUL     TOTAL
   128bc35f      53          1              54
   876c7f5b      2           0              2
   this          1           1              2

Signed-off-by: Pavel Merzlyakov <pavel.merzlyakov@gmail.com>
Acked-by: Jo-Philipp Wich <jo@mein.io>
kmodloader.c