Skip to content

Commit

Permalink
DellEMC: Z9332f - Graceful platform reboot (#10240)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
ArunSaravananBalachandran authored Aug 30, 2022
1 parent cf69206 commit 092e039
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[Service]
ExecStart=
ExecStart=/usr/share/sonic/device/x86_64-dellemc_z9332f_d1508-r0/platform_reboot_override
Original file line number Diff line number Diff line change
@@ -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 comments on commit 092e039

Please sign in to comment.