1 |
commit: d8f76f80288f19c0d2d90e9c4999879ad0c61d1e |
2 |
Author: Fernando Reyes (likewhoa) <design <AT> missionaccomplish <DOT> com> |
3 |
AuthorDate: Fri May 30 02:02:30 2014 +0000 |
4 |
Commit: Richard Farina <zerochaos <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Apr 29 17:31:45 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/genkernel.git/commit/?id=d8f76f80 |
7 |
|
8 |
Restructure the setup_aufs function, it had redundant code and moved |
9 |
the call to it further down the pipe. |
10 |
|
11 |
defaults/initrd.scripts | 181 +++++++++++++++++++++++------------------------- |
12 |
defaults/linuxrc | 2 +- |
13 |
2 files changed, 89 insertions(+), 94 deletions(-) |
14 |
|
15 |
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts |
16 |
index a9ec5ab..14800e4 100644 |
17 |
--- a/defaults/initrd.scripts |
18 |
+++ b/defaults/initrd.scripts |
19 |
@@ -302,115 +302,110 @@ create_changefs() { |
20 |
} |
21 |
|
22 |
setup_aufs() { |
23 |
- if [ "${USE_AUFS_NORMAL}" -eq '1' ] |
24 |
+ # Directory used for rw changes in union mount filesystem |
25 |
+ UNION=/union |
26 |
+ MEMORY=/memory |
27 |
+ # Mountpoint for the changesdev |
28 |
+ CHANGESMNT=${NEW_ROOT}/mnt/changesdev |
29 |
+ if [ -z "$UID" ] |
30 |
then |
31 |
- # Directory used for rw changes in union mount filesystem |
32 |
- UNION=/union |
33 |
- MEMORY=/memory |
34 |
- # Mountpoint for the changesdev |
35 |
- CHANGESMNT=${NEW_ROOT}/mnt/changesdev |
36 |
- if [ -z "$UID" ] |
37 |
- then |
38 |
- CHANGES=${MEMORY}/aufs_changes/default |
39 |
- else |
40 |
- CHANGES=${MEMORY}/aufs_changes/${UID} |
41 |
- fi |
42 |
+ CHANGES=${MEMORY}/aufs_changes/default |
43 |
+ else |
44 |
+ CHANGES=${MEMORY}/aufs_changes/${UID} |
45 |
+ fi |
46 |
|
47 |
- mkdir -p ${MEMORY} |
48 |
- mkdir -p ${UNION} |
49 |
- mkdir -p ${CHANGESMNT} |
50 |
- for i in dev mnt ${CDROOT_PATH} mnt/livecd mnt/key tmp tmp/.initrd mnt/gentoo sys |
51 |
- do |
52 |
- mkdir -p "${NEW_ROOT}/${i}" |
53 |
- chmod 755 "${NEW_ROOT}/${i}" |
54 |
- done |
55 |
- [ ! -e "${NEW_ROOT}/dev/null" ] && mknod "${NEW_ROOT}"/dev/null c 1 3 |
56 |
- [ ! -e "${NEW_ROOT}/dev/console" ] && mknod "${NEW_ROOT}"/dev/console c 5 1 |
57 |
+ mkdir -p ${MEMORY} |
58 |
+ mkdir -p ${UNION} |
59 |
+ mkdir -p ${CHANGESMNT} |
60 |
+ for i in dev mnt ${CDROOT_PATH} mnt/livecd mnt/key tmp tmp/.initrd mnt/gentoo sys |
61 |
+ do |
62 |
+ mkdir -p "${NEW_ROOT}/${i}" |
63 |
+ chmod 755 "${NEW_ROOT}/${i}" |
64 |
+ done |
65 |
+ [ ! -e "${NEW_ROOT}/dev/null" ] && mknod "${NEW_ROOT}"/dev/null c 1 3 |
66 |
+ [ ! -e "${NEW_ROOT}/dev/console" ] && mknod "${NEW_ROOT}"/dev/console c 5 1 |
67 |
|
68 |
- bootstrapCD |
69 |
- if [ -n "${AUFS}" ] |
70 |
+ bootstrapCD |
71 |
+ if [ -n "${AUFS}" ] |
72 |
+ then |
73 |
+ if [ "${AUFS}" = "detect" ] |
74 |
then |
75 |
- if [ "${AUFS}" = "detect" ] |
76 |
+ CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}" |
77 |
+ CHANGESDEV=${REAL_ROOT} |
78 |
+ else |
79 |
+ CHANGESDEV=${AUFS} |
80 |
+ good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support" |
81 |
+ mount -t auto ${CHANGESDEV} ${CHANGESMNT} |
82 |
+ ret=$? |
83 |
+ if [ "${ret}" -ne 0 ] |
84 |
then |
85 |
- CHANGESMNT="${NEW_ROOT}${CDROOT_PATH}" |
86 |
- CHANGESDEV=${REAL_ROOT} |
87 |
- else |
88 |
- CHANGESDEV=${AUFS} |
89 |
- good_msg "mounting ${CHANGESDEV} to ${MEMORY} for aufs support" |
90 |
- mount -t auto ${CHANGESDEV} ${CHANGESMNT} |
91 |
+ bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs" |
92 |
+ unset AUFS |
93 |
+ fi |
94 |
+ fi |
95 |
+ # Check and attempt to create the changesfile |
96 |
+ if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ] |
97 |
+ then |
98 |
+ create_changefs |
99 |
+ mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY} |
100 |
+ elif [ -n "${AUFS}" ] |
101 |
+ then |
102 |
+ local nbpass=0 |
103 |
+ while [ 1 ] |
104 |
+ do |
105 |
+ mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY} |
106 |
ret=$? |
107 |
if [ "${ret}" -ne 0 ] |
108 |
then |
109 |
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs" |
110 |
- unset AUFS |
111 |
- fi |
112 |
- fi |
113 |
- # Check and attempt to create the changesfile |
114 |
- if [ ! -e ${CHANGESMNT}/${AUFS_CHANGESFILE} ] && [ -n "${AUFS}" ] |
115 |
- then |
116 |
- create_changefs |
117 |
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY} |
118 |
- elif [ -n "${AUFS}" ] |
119 |
- then |
120 |
- local nbpass=0 |
121 |
- while [ 1 ] |
122 |
- do |
123 |
- mount -t auto ${CHANGESMNT}/${AUFS_CHANGESFILE} ${MEMORY} |
124 |
- ret=$? |
125 |
- if [ "${ret}" -ne 0 ] |
126 |
+ if [ ${nbpass} -eq 0 ] |
127 |
then |
128 |
- if [ ${nbpass} -eq 0 ] |
129 |
- then |
130 |
- bad_msg "mounting of changes file failed, Running e2fsck" |
131 |
- e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE} |
132 |
- nbpass=$((${nbpass} + 1)) |
133 |
- else |
134 |
- bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs" |
135 |
- bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it" |
136 |
- bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad" |
137 |
- mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad |
138 |
- bad_msg "try to fix it yourself with e2fsck later on, sorry for disturbing" |
139 |
- break |
140 |
- fi |
141 |
+ bad_msg "mounting of changes file failed, Running e2fsck" |
142 |
+ e2fsck ${CHANGESMNT}/${AUFS_CHANGESFILE} |
143 |
+ nbpass=$((${nbpass} + 1)) |
144 |
else |
145 |
- if [ ${nbpass} -eq 1 ] |
146 |
- then |
147 |
- good_msg "e2fsck ran successfully. Please check your files after bootup" |
148 |
- fi |
149 |
+ bad_msg "mount of ${CHANGESDEV} failed, falling back to ramdisk based aufs" |
150 |
+ bad_msg "your ${AUFS_CHANGESFILE} might be messed up, and I couldn't fix it" |
151 |
+ bad_msg "moving ${AUFS_CHANGESFILE} to ${AUFS_CHANGESFILE}.bad" |
152 |
+ mv ${CHANGESMNT}/${AUFS_CHANGESFILE} ${CHANGESMNT}/${AUFS_CHANGESFILE}.bad |
153 |
+ bad_msg "try to fix it yourself with e2fsck later on, sorry for disturbing" |
154 |
break |
155 |
fi |
156 |
- done |
157 |
- fi |
158 |
- # mount tmpfs only in the case when changes= boot parameter was |
159 |
- # empty or we were not able to mount the storage device |
160 |
- if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ] |
161 |
- then |
162 |
- umount ${MEMORY} |
163 |
- bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}" |
164 |
- bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs" |
165 |
- bad_msg "falling back to ramdisk based aufs for safety" |
166 |
- mount -t tmpfs tmpfs ${MEMORY} |
167 |
- XINO=${MEMORY} |
168 |
- else |
169 |
- XINO=${MEMORY}/xino |
170 |
- mkdir -p ${XINO} |
171 |
- mount -t tmpfs tmpfs ${XINO} |
172 |
- fi |
173 |
- else |
174 |
- good_msg "Mounting ramdisk to $MEMORY for aufs support..." |
175 |
- mount -t tmpfs tmpfs ${MEMORY} |
176 |
- XINO=${MEMORY} |
177 |
+ else |
178 |
+ if [ ${nbpass} -eq 1 ] |
179 |
+ then |
180 |
+ good_msg "e2fsck ran successfully. Please check your files after bootup" |
181 |
+ fi |
182 |
+ break |
183 |
+ fi |
184 |
+ done |
185 |
fi |
186 |
- |
187 |
- mkdir -p ${CHANGES} |
188 |
- mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION} |
189 |
- ret=$? |
190 |
- if [ "${ret}" -ne 0 ] |
191 |
+ # mount tmpfs only in the case when changes= boot parameter was |
192 |
+ # empty or we were not able to mount the storage device |
193 |
+ if [ "${CDROOT}" -eq '1' -a ! -f ${CHANGESMNT}/${AUFS_CHANGESFILE} ] |
194 |
then |
195 |
- bad_msg "Can't setup union ${UNION} in directory!" |
196 |
- USE_AUFS_NORMAL=0 |
197 |
+ umount ${MEMORY} |
198 |
+ bad_msg "failed to find ${AUFS_CHANGESFILE} file on ${CHANGESDEV}" |
199 |
+ bad_msg "create an ext2 ${AUFS_CHANGESFILE} file on this device if you wish to use it for aufs" |
200 |
+ bad_msg "falling back to ramdisk based aufs for safety" |
201 |
+ mount -t tmpfs tmpfs ${MEMORY} |
202 |
+ XINO=${MEMORY} |
203 |
+ else |
204 |
+ XINO=${MEMORY}/xino |
205 |
+ mkdir -p ${XINO} |
206 |
+ mount -t tmpfs tmpfs ${XINO} |
207 |
fi |
208 |
else |
209 |
+ good_msg "Mounting ramdisk to $MEMORY for aufs support..." |
210 |
+ mount -t tmpfs tmpfs ${MEMORY} |
211 |
+ XINO=${MEMORY} |
212 |
+ fi |
213 |
+ |
214 |
+ mkdir -p ${CHANGES} |
215 |
+ mount -t aufs -n -o nowarn_perm,udba=none,xino=${XINO}/.aufs.xino,br:${CHANGES}=rw aufs ${UNION} |
216 |
+ ret=$? |
217 |
+ if [ "${ret}" -ne 0 ] |
218 |
+ then |
219 |
+ bad_msg "Can't setup union ${UNION} in directory!" |
220 |
USE_AUFS_NORMAL=0 |
221 |
fi |
222 |
} |
223 |
|
224 |
diff --git a/defaults/linuxrc b/defaults/linuxrc |
225 |
index 5d4d2a1..894ec45 100644 |
226 |
--- a/defaults/linuxrc |
227 |
+++ b/defaults/linuxrc |
228 |
@@ -457,9 +457,9 @@ rundebugshell "before setting up the root filesystem" |
229 |
|
230 |
if [ "${CDROOT}" = '1' ] |
231 |
then |
232 |
- setup_aufs |
233 |
if [ "${USE_AUFS_NORMAL}" -eq '1' ] |
234 |
then |
235 |
+ setup_aufs |
236 |
CHROOT=${UNION} |
237 |
else |
238 |
CHROOT=${NEW_ROOT} |