DellEMC: Z9332f - Graceful platform reboot (#10240)
Why I did it To gracefully unmount filesystems and stop containers while performing a cold reboot. Unmount ONIE-BOOT if mounted during fast/soft/warm reboot How I did it Override systemd-reboot service to perform a cold reboot. Unmount ONIE-BOOT if mounted using fast/soft/warm-reboot plugins. How to verify it On reboot, verify that the container stop and filesystem unmount services have completed execution before the platform reboot.
This commit is contained in:
parent
cf69206d02
commit
092e0394b5
@ -4,7 +4,11 @@ z9332f/scripts/sensors usr/bin
|
|||||||
z9332f/cfg/z9332f-modules.conf etc/modules-load.d
|
z9332f/cfg/z9332f-modules.conf etc/modules-load.d
|
||||||
z9332f/systemd/platform-modules-z9332f.service etc/systemd/system
|
z9332f/systemd/platform-modules-z9332f.service etc/systemd/system
|
||||||
z9332f/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0
|
z9332f/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0
|
||||||
common/platform_reboot usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0
|
z9332f/scripts/platform_reboot_override usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0
|
||||||
|
z9332f/scripts/override.conf /etc/systemd/system/systemd-reboot.service.d
|
||||||
|
z9332f/scripts/fast-reboot_plugin usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0
|
||||||
|
z9332f/scripts/soft-reboot_plugin usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0
|
||||||
|
z9332f/scripts/warm-reboot_plugin usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0
|
||||||
common/pcisysfs.py usr/bin
|
common/pcisysfs.py usr/bin
|
||||||
common/io_rd_wr.py usr/local/bin
|
common/io_rd_wr.py usr/local/bin
|
||||||
common/fw-updater usr/local/bin
|
common/fw-updater usr/local/bin
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ONIE_PATH="/mnt/onie-boot"
|
||||||
|
|
||||||
|
# Unmount ONIE partition if mounted
|
||||||
|
if grep -qs ${ONIE_PATH} /proc/mounts; then
|
||||||
|
umount ${ONIE_PATH}
|
||||||
|
fi
|
@ -0,0 +1,3 @@
|
|||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=/usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0/platform_reboot_override
|
@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
import os
|
||||||
|
import struct
|
||||||
|
|
||||||
|
PORT_RES = '/dev/port'
|
||||||
|
|
||||||
|
|
||||||
|
def portio_reg_write(resource, offset, val):
|
||||||
|
fd = os.open(resource, os.O_RDWR)
|
||||||
|
if(fd < 0):
|
||||||
|
print('file open failed %s' % resource)
|
||||||
|
return
|
||||||
|
if(os.lseek(fd, offset, os.SEEK_SET) != offset):
|
||||||
|
print('lseek failed on %s' % resource)
|
||||||
|
return
|
||||||
|
ret = os.write(fd, struct.pack('B', val))
|
||||||
|
if(ret != 1):
|
||||||
|
print('write failed %d' % ret)
|
||||||
|
return
|
||||||
|
os.close(fd)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
portio_reg_write(PORT_RES, 0xcf9, 0xe)
|
@ -0,0 +1 @@
|
|||||||
|
fast-reboot_plugin
|
@ -0,0 +1 @@
|
|||||||
|
fast-reboot_plugin
|
Reference in New Issue
Block a user