Skip to content

Commit 32f58b5

Browse files
authored
Fix "/host unmount failure" during reboot (sonic-net#4558)
1 parent cdfb1ce commit 32f58b5

3 files changed

Lines changed: 42 additions & 0 deletions

File tree

files/build_templates/sonic_debian_extension.j2

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,11 @@ sudo cp $IMAGE_CONFIGS/rsyslog/rsyslog.conf.j2 $FILESYSTEM_ROOT_USR_SHARE_SONIC_
224224
sudo cp $IMAGE_CONFIGS/rsyslog/rsyslog.d/* $FILESYSTEM_ROOT/etc/rsyslog.d/
225225
echo "rsyslog-config.service" | sudo tee -a $GENERATED_SERVICE_FILE
226226

227+
# Copy syslog override files
228+
sudo mkdir -p $FILESYSTEM_ROOT/etc/systemd/system/syslog.socket.d
229+
sudo cp $IMAGE_CONFIGS/syslog/override.conf $FILESYSTEM_ROOT/etc/systemd/system/syslog.socket.d/override.conf
230+
sudo cp $IMAGE_CONFIGS/syslog/host_umount.sh $FILESYSTEM_ROOT/usr/bin/
231+
227232
# Copy logrotate.d configuration files
228233
sudo cp -f $IMAGE_CONFIGS/logrotate/logrotate.d/* $FILESYSTEM_ROOT/etc/logrotate.d/
229234

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#!/bin/bash
2+
# This script is invoked at the closure of syslog socket during reboot
3+
# This will stop journal services, unmount /var/log and delete loop device
4+
# associated to /host to ensure proper unmount of /host
5+
6+
journal_stop() {
7+
systemctl stop systemd-journald.service
8+
systemctl stop systemd-journald.socket
9+
systemctl stop systemd-journald-audit.socket
10+
systemctl stop systemd-journald-dev-log.socket
11+
}
12+
13+
delete_loop_device() {
14+
umount /var/log
15+
if [[ $? -ne 0 ]]
16+
then
17+
exit 0
18+
fi
19+
losetup -d /dev/loop1
20+
}
21+
22+
case "$1" in
23+
journal_stop|delete_loop_device)
24+
$1
25+
;;
26+
*)
27+
echo "Usage: $0 {journal_stop|delete_loop_device}" >&2
28+
exit 1
29+
;;
30+
esac
31+
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[Unit]
2+
After=var-log.mount host.mount
3+
4+
[Socket]
5+
ExecStopPre=/usr/bin/host_umount.sh journal_stop
6+
ExecStopPost=/usr/bin/host_umount.sh delete_loop_device

0 commit comments

Comments
 (0)