From b0163ef98709f11c60e41ea05ebee47ff9766fe5 Mon Sep 17 00:00:00 2001
From: Jafaruddin Lie <jafar.lie@monash.edu>
Date: Tue, 5 Jun 2018 13:36:40 +1000
Subject: [PATCH] systemd script to make sure /dev/nvidia-* is created

Former-commit-id: a8e46cef54ab622313078c82bae3ea49e1f5b33c
---
 .../systemd-nvidia-uvm/files/check-dev-uvm.sh  |  7 +++++++
 .../files/create-dev-uvm.service               | 14 ++++++++++++++
 .../systemd-nvidia-uvm/files/create-dev-uvm.sh |  4 ++++
 roles/systemd-nvidia-uvm/tasks/main.yml        | 18 ++++++++++++++++++
 4 files changed, 43 insertions(+)
 create mode 100644 roles/systemd-nvidia-uvm/files/check-dev-uvm.sh
 create mode 100644 roles/systemd-nvidia-uvm/files/create-dev-uvm.service
 create mode 100755 roles/systemd-nvidia-uvm/files/create-dev-uvm.sh
 create mode 100644 roles/systemd-nvidia-uvm/tasks/main.yml

diff --git a/roles/systemd-nvidia-uvm/files/check-dev-uvm.sh b/roles/systemd-nvidia-uvm/files/check-dev-uvm.sh
new file mode 100644
index 00000000..8f99da81
--- /dev/null
+++ b/roles/systemd-nvidia-uvm/files/check-dev-uvm.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+echo "Checking nvidia devices"
+if [ -f /dev/nvidia-uvm ]; then
+    echo "Device created"
+else
+    echo "Device not created"
+fi
diff --git a/roles/systemd-nvidia-uvm/files/create-dev-uvm.service b/roles/systemd-nvidia-uvm/files/create-dev-uvm.service
new file mode 100644
index 00000000..0b28eeea
--- /dev/null
+++ b/roles/systemd-nvidia-uvm/files/create-dev-uvm.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Check Nvidia UVM devices
+After=lustre-client.service
+Wants=lustre-client.service
+
+[Service]
+Type=oneshot
+ExecStart=/usr/local/sbin/create-dev-uvm.sh
+RemainAfterExit=true
+ExecStop=/usr/local/sbin/check-dev-uvm.sh
+StandardOutput=journal
+
+[Install]
+WantedBy=multi-user.target
diff --git a/roles/systemd-nvidia-uvm/files/create-dev-uvm.sh b/roles/systemd-nvidia-uvm/files/create-dev-uvm.sh
new file mode 100755
index 00000000..2a7db6cf
--- /dev/null
+++ b/roles/systemd-nvidia-uvm/files/create-dev-uvm.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+# This script is intended to be run via systemd during startup of visnodes to create NVidia UVM Devices
+
+LDFLAGS="-L/usr/local/cuda/8.0.61/lib64/stubs -L/usr/lib64 -L/usr/local/cuda/8.0.61/lib64 -L/usr/local/cuda/8.0.61/lib" /usr/local/cuda/8.0.61/samples/1_Utilities/deviceQuery/deviceQuery
diff --git a/roles/systemd-nvidia-uvm/tasks/main.yml b/roles/systemd-nvidia-uvm/tasks/main.yml
new file mode 100644
index 00000000..a03dec76
--- /dev/null
+++ b/roles/systemd-nvidia-uvm/tasks/main.yml
@@ -0,0 +1,18 @@
+---
+- name: Copy Files
+  become: true
+  become_user: root
+  copy:
+   src: "{{ item.src }}"
+   dest: "{{ item.dest }}"
+   owner: root
+   mode: 755
+  with_items:
+   - { src: 'create-dev-uvm.sh', dest: '/usr/local/sbin/' }
+   - { src: 'check-dev-uvm.sh', dest: '/usr/local/sbin/' }
+   - { src: 'create-dev-uvm.service', dest: '/etc/systemd/system/' }
+
+- name: Enable Service
+  become: true
+  become_user: root
+  systemd: state=started name=create-dev-uvm
-- 
GitLab