Change-Id: I68f587df99558307bfc1b3d167d7cd523595692b
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/3377
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
Summary: initramfs |
2 | 2 |
Name: initramfs |
3 | 3 |
Version: 2.0 |
4 |
-Release: 2%{?dist} |
|
4 |
+Release: 3%{?dist} |
|
5 | 5 |
Source0: fscks.conf |
6 | 6 |
License: Apache License |
7 | 7 |
Group: System Environment/Base |
... | ... |
@@ -18,53 +18,92 @@ mkdir -p %{buildroot}%{_sysconfdir}/dracut.conf.d |
18 | 18 |
install -D -m644 %{SOURCE0} %{buildroot}%{_sysconfdir}/dracut.conf.d/ |
19 | 19 |
install -d -m755 %{buildroot}%{_localstatedir}/lib/initramfs/kernel |
20 | 20 |
|
21 |
-%define watched_path %{_sbindir} %{_libdir}/udev/rules.d %{_libdir}/systemd/system /lib/modules |
|
21 |
+%define watched_path %{_sbindir} %{_libdir}/udev/rules.d %{_libdir}/systemd/system /lib/modules %{_sysconfdir}/dracut.conf.d |
|
22 | 22 |
%define watched_pkgs e2fsprogs, ostree, systemd, kpartx, device-mapper-multipath |
23 | 23 |
|
24 |
-%define removal_action \ |
|
25 |
-rm -rf %{_localstatedir}/lib/rpm-state/initramfs.regenerate \ |
|
26 |
-rm -rf %{_localstatedir}/lib/rpm-state/initramfs.pending |
|
24 |
+%define removal_action() rm -rf %{_localstatedir}/lib/rpm-state/initramfs |
|
27 | 25 |
|
28 |
-%define pkgs_trigger_action \ |
|
29 |
-[ -f %{_localstatedir}/lib/rpm-state/initramfs.regenerate ] && exit 0 \ |
|
30 |
-mkdir -p %{_localstatedir}/lib/rpm-state \ |
|
31 |
-touch %{_localstatedir}/lib/rpm-state/initramfs.regenerate \ |
|
32 |
-echo "initramfs (re)generation triggered" >&2 |
|
26 |
+# How it works: |
|
27 |
+# |
|
28 |
+# We would like initramfs generation to happen if a given set of packages |
|
29 |
+# are changed, including installing/upgrading/uninstalling. |
|
30 |
+# |
|
31 |
+# Hence, Two sets of triggers: |
|
32 |
+# |
|
33 |
+# package triggers for setting the `regenerate` flag |
|
34 |
+# upon critical package install/upgrade/uninstall |
|
35 |
+# |
|
36 |
+# file transaction triggers which overlaps the set of files in those packages |
|
37 |
+# so that we have an opportunity to check for the flag and (re)generate |
|
38 |
+# initrd for all the kernels. |
|
39 |
+# |
|
40 |
+# All the flags will be put in /var/lib/rpm-state/initramfs |
|
41 |
+# |
|
42 |
+# This ensures the easy removal of the intermediate state, |
|
43 |
+# postun is essential here, as it guarantees that no intermediate states |
|
44 |
+# will be left over for the new initramfs rpm, since triggerin/un |
|
45 |
+# in the new rpm will execute after the postun in the old rpm |
|
46 |
+# |
|
47 |
+# The order of the scriptlet is critical. The heavy lifting mkinitrd is |
|
48 |
+# always done post transaction, as it's always invoked in posttrans/ |
|
49 |
+# transfiletriggerin/transfiletriggerpostun. Whereas the creation of flag |
|
50 |
+# is in the middle of transaction. |
|
51 |
+# |
|
52 |
+# The kernel rpm has triggers for initramfs. This is an optimization, as |
|
53 |
+# we don't want mkinitrd be invoked for all the kernels if some of the kernel |
|
54 |
+# rpms is being installed/upgraded/uninstalled. Hence, there is no trigger |
|
55 |
+# in initramfs watching for linux, but there is file transaction trigger |
|
56 |
+# watching for /lib/modules. The triggerin in linux.rpm will create flag as |
|
57 |
+# |
|
58 |
+# pending/%{uname_r} |
|
59 |
+# |
|
60 |
+# which indicates only the corresponding initrd will be (re)generated, and |
|
61 |
+# the triggerun in linux.rpm will remove the corresponding initrd. |
|
33 | 62 |
|
34 |
-%define file_trigger_action \ |
|
63 |
+%define pkgs_trigger_action() \ |
|
64 |
+[ -f %{_localstatedir}/lib/rpm-state/initramfs/regenerate ] && exit 0 \ |
|
65 |
+mkdir -p %{_localstatedir}/lib/rpm-state/initramfs \ |
|
66 |
+touch %{_localstatedir}/lib/rpm-state/initramfs/regenerate \ |
|
67 |
+echo "initramfs (re)generation" %* >&2 |
|
68 |
+ |
|
69 |
+%define file_trigger_action() \ |
|
35 | 70 |
cat > /dev/null \ |
36 |
-if [ -f %{_localstatedir}/lib/rpm-state/initramfs.regenerate ]; then \ |
|
37 |
- echo "(re)generate initramfs for all kernels" >&2 \ |
|
71 |
+if [ -f %{_localstatedir}/lib/rpm-state/initramfs/regenerate ]; then \ |
|
72 |
+ echo "(re)generate initramfs for all kernels," %* >&2 \ |
|
38 | 73 |
mkinitrd -q \ |
39 |
-elif [ -d %{_localstatedir}/lib/rpm-state/initramfs.pending ]; then \ |
|
40 |
- for k in `ls %{_localstatedir}/lib/rpm-state/initramfs.pending/`; do \ |
|
41 |
- echo "generate initramfs for $k" >&2 \ |
|
74 |
+elif [ -d %{_localstatedir}/lib/rpm-state/initramfs/pending ]; then \ |
|
75 |
+ for k in `ls %{_localstatedir}/lib/rpm-state/initramfs/pending/`; do \ |
|
76 |
+ echo "(re)generate initramfs for $k," %* >&2 \ |
|
42 | 77 |
mkinitrd -q /boot/initrd.img-$k $k \ |
43 | 78 |
done; \ |
44 | 79 |
fi \ |
45 |
-%{removal_action} |
|
80 |
+%removal_action |
|
46 | 81 |
|
47 |
-%post |
|
48 |
-%{pkgs_trigger_action} |
|
82 |
+%posttrans |
|
83 |
+echo "initramfs" %{version}-%{release} "posttrans" >&2 |
|
84 |
+%removal_action |
|
85 |
+mkinitrd -q |
|
49 | 86 |
|
50 | 87 |
%postun |
51 |
-[ $1 -eq 0 ] || exit 0 |
|
52 |
-%{removal_action} |
|
53 |
- |
|
54 |
-%posttrans |
|
55 |
-%{file_trigger_action} |
|
88 |
+echo "initramfs" %{version}-%{release} "postun" >&2 |
|
89 |
+#cleanup the states |
|
90 |
+%removal_action |
|
56 | 91 |
|
57 | 92 |
%triggerin -- %{watched_pkgs} |
58 |
-%{pkgs_trigger_action} |
|
93 |
+[ $1 -gt 1 ] && exit 0 |
|
94 |
+#Upgrading, let the posttrans of new initramfs handles it |
|
95 |
+%pkgs_trigger_action triggerin $* %{version}-%{release} |
|
59 | 96 |
|
60 | 97 |
%triggerun -- %{watched_pkgs} |
61 |
-%{pkgs_trigger_action} |
|
98 |
+[ $1 -eq 0 ] && exit 0 |
|
99 |
+#Uninstalling, let the linux.rpm removes initrd for themselves |
|
100 |
+%pkgs_trigger_action triggerun $* %{version}-%{release} |
|
62 | 101 |
|
63 | 102 |
%transfiletriggerin -- %{watched_path} |
64 |
-%{file_trigger_action} |
|
103 |
+%file_trigger_action transfilertriggerin %{version}-%{release} |
|
65 | 104 |
|
66 | 105 |
%transfiletriggerpostun -- %{watched_path} |
67 |
-%{file_trigger_action} |
|
106 |
+%file_trigger_action transfiletriggerpostun %{version}-%{release} |
|
68 | 107 |
|
69 | 108 |
%files |
70 | 109 |
%defattr(-,root,root,-) |
... | ... |
@@ -72,6 +111,8 @@ fi \ |
72 | 72 |
%dir %{_localstatedir}/lib/initramfs/kernel |
73 | 73 |
|
74 | 74 |
%changelog |
75 |
+* Thu Jul 27 2017 Bo Gan <ganb@vmware.com> 2.0-3 |
|
76 |
+- Move all states to one directory |
|
75 | 77 |
* Fri May 26 2017 Bo Gan <ganb@vmware.com> 2.0-2 |
76 | 78 |
- Discard stdin before dracut |
77 | 79 |
* Wed Apr 12 2017 Bo Gan <ganb@vmware.com> 2.0-1 |
... | ... |
@@ -1,9 +1,9 @@ |
1 | 1 |
%triggerin -- initramfs |
2 |
-mkdir -p %{_localstatedir}/lib/rpm-state/initramfs/kernel.pending |
|
3 |
-touch %{_localstatedir}/lib/rpm-state/initramfs/kernel.pending/%{uname_r} |
|
2 |
+mkdir -p %{_localstatedir}/lib/rpm-state/initramfs/pending |
|
3 |
+touch %{_localstatedir}/lib/rpm-state/initramfs/pending/%{uname_r} |
|
4 | 4 |
echo "initrd generation of kernel %{uname_r} will be triggered later" >&2 |
5 | 5 |
|
6 | 6 |
%triggerun -- initramfs |
7 |
-rm -rf %{_localstatedir}/lib/rpm-state/initramfs/kernel.pending/%{uname_r} |
|
7 |
+rm -rf %{_localstatedir}/lib/rpm-state/initramfs/pending/%{uname_r} |
|
8 | 8 |
rm -rf /boot/initrd.img-%{uname_r} |
9 | 9 |
echo "initrd of kernel %{uname_r} removed" >&2 |
... | ... |
@@ -2,7 +2,7 @@ |
2 | 2 |
Summary: Kernel |
3 | 3 |
Name: linux-esx |
4 | 4 |
Version: 4.9.38 |
5 |
-Release: 2%{?dist} |
|
5 |
+Release: 3%{?dist} |
|
6 | 6 |
License: GPLv2 |
7 | 7 |
URL: http://www.kernel.org/ |
8 | 8 |
Group: System Environment/Kernel |
... | ... |
@@ -187,6 +187,8 @@ ln -sf linux-%{uname_r}.cfg /boot/photon.cfg |
187 | 187 |
/usr/src/linux-headers-%{uname_r} |
188 | 188 |
|
189 | 189 |
%changelog |
190 |
+* Wed Jul 26 2017 Bo Gan <ganb@vmware.com> 4.9.38-3 |
|
191 |
+- Fix initramfs triggers |
|
190 | 192 |
* Thu Jul 20 2017 Alexey Makhalov <amakhalov@vmware.com> 4.9.38-2 |
191 | 193 |
- Disable scheduler beef up patch |
192 | 194 |
* Tue Jul 18 2017 Alexey Makhalov <amakhalov@vmware.com> 4.9.38-1 |
... | ... |
@@ -2,7 +2,7 @@ |
2 | 2 |
Summary: Kernel |
3 | 3 |
Name: linux-secure |
4 | 4 |
Version: 4.9.38 |
5 |
-Release: 5%{?dist} |
|
5 |
+Release: 6%{?dist} |
|
6 | 6 |
License: GPLv2 |
7 | 7 |
URL: http://www.kernel.org/ |
8 | 8 |
Group: System Environment/Kernel |
... | ... |
@@ -255,6 +255,8 @@ ln -sf linux-%{uname_r}.cfg /boot/photon.cfg |
255 | 255 |
/usr/src/linux-headers-%{uname_r} |
256 | 256 |
|
257 | 257 |
%changelog |
258 |
+* Fri Aug 04 2017 Bo Gan <ganb@vmware.com> 4.9.38-6 |
|
259 |
+- Fix initramfs triggers |
|
258 | 260 |
* Tue Aug 01 2017 Anish Swaminathan <anishs@vmware.com> 4.9.38-5 |
259 | 261 |
- Allow some algorithms in FIPS mode |
260 | 262 |
- Reverts 284a0f6e87b0721e1be8bca419893902d9cf577a and backports |
... | ... |
@@ -2,7 +2,7 @@ |
2 | 2 |
Summary: Kernel |
3 | 3 |
Name: linux |
4 | 4 |
Version: 4.9.38 |
5 |
-Release: 5%{?dist} |
|
5 |
+Release: 6%{?dist} |
|
6 | 6 |
License: GPLv2 |
7 | 7 |
URL: http://www.kernel.org/ |
8 | 8 |
Group: System Environment/Kernel |
... | ... |
@@ -295,6 +295,8 @@ ln -sf %{name}-%{uname_r}.cfg /boot/photon.cfg |
295 | 295 |
/usr/share/doc/* |
296 | 296 |
|
297 | 297 |
%changelog |
298 |
+* Fri Aug 04 2017 Bo Gan <ganb@vmware.com> 4.9.38-6 |
|
299 |
+- Fix initramfs triggers |
|
298 | 300 |
* Tue Aug 01 2017 Anish Swaminathan <anishs@vmware.com> 4.9.38-5 |
299 | 301 |
- Allow some algorithms in FIPS mode |
300 | 302 |
- Reverts 284a0f6e87b0721e1be8bca419893902d9cf577a and backports |