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/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
|
||||
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/io_rd_wr.py 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