From b837233818e8c716b35c6eafa9c36d7fd6496bf6 Mon Sep 17 00:00:00 2001 From: Sanjeev Rohila Date: Mon, 1 Sep 2025 11:47:06 +0530 Subject: [PATCH 1/2] Adding logic to take case the /export/home mount before delting /export/home Adding the mount point logic back to delphix-platform.sh script Changing as per Seb-s comment to alter the softlink logic. Changing the code to previous version to validate the comments. Changing the delphix-legacy-link.service to perform the same steps next reboot like deferred upgrade. Creating a different service for taking care of soft /export/home -> /home DLPX-89763 DLPX-86523 delphix-platform changes Moved the code to create symlink to different script Removing the autofs handling as per the concerns raised by Seb and our validation Removing the softlink loginc from main.yml Since /export/home has empty delphix directory, taking care Taking care the comments from Seb on 16 July 2025. handling /export/home and /home both mounted, validated in mount | grep home check PR URL: https://www.github.com/delphix/delphix-platform/pull/477 --- debian/preinst | 42 +++++++++++++++ .../systemd/system/delphix-platform.service | 1 + .../roles/delphix-platform/tasks/main.yml | 8 +-- .../var/lib/delphix-platform/export-home | 51 +++++++++++++++++++ 4 files changed, 98 insertions(+), 4 deletions(-) create mode 100644 debian/preinst create mode 100755 files/common/var/lib/delphix-platform/export-home diff --git a/debian/preinst b/debian/preinst new file mode 100644 index 000000000..a22ccb233 --- /dev/null +++ b/debian/preinst @@ -0,0 +1,42 @@ +#!/bin/bash -eux +# +# Copyright 2025 Delphix +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +case $1 in +upgrade) + # Home directories were previously mounted under /export/home, + # and this was changed to /home. This is the upgrade logic that + # updates the /etc/fstab file to reflect that change. + # Home directories will be mounted in both /export/home and /home + # until the system is rebooted to ensure that running processes + # referencing the old /export/home paths continue to function + # while also enabling new logins under /home to work. + fs_tab=/etc/fstab + + if grep -q "\/export\/home" "$fs_tab"; then + sed -i 's|/export/home|/home|g' "$fs_tab" + mount /home + fi + + passwd_file=/etc/passwd + if grep -q "\/export\/home" "$passwd_file"; then + sed -i 's/\/export\/home/\/home/g' /etc/passwd + fi + + ;; +esac + +exit 0 diff --git a/files/common/lib/systemd/system/delphix-platform.service b/files/common/lib/systemd/system/delphix-platform.service index 89a809d67..70514fdbe 100644 --- a/files/common/lib/systemd/system/delphix-platform.service +++ b/files/common/lib/systemd/system/delphix-platform.service @@ -24,6 +24,7 @@ Before=rsync.service docker.service Type=oneshot ExecStart=/var/lib/delphix-platform/ansible/apply ExecStart=/var/lib/delphix-platform/dynamic-debug +ExecStart=/var/lib/delphix-platform/export-home RemainAfterExit=yes # diff --git a/files/common/var/lib/delphix-platform/ansible/10-delphix-platform/roles/delphix-platform/tasks/main.yml b/files/common/var/lib/delphix-platform/ansible/10-delphix-platform/roles/delphix-platform/tasks/main.yml index 47a75d187..1a9a401be 100644 --- a/files/common/var/lib/delphix-platform/ansible/10-delphix-platform/roles/delphix-platform/tasks/main.yml +++ b/files/common/var/lib/delphix-platform/ansible/10-delphix-platform/roles/delphix-platform/tasks/main.yml @@ -1,5 +1,5 @@ # -# Copyright 2018, 2023 Delphix +# Copyright 2018, 2025 Delphix # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ # it below; otherwise that task will fail. # - file: - path: /export/home + path: /home state: directory mode: 0755 @@ -35,7 +35,7 @@ shell: /bin/bash create_home: yes comment: Delphix User - home: /export/home/delphix + home: /home/delphix # # In order for this locale to be used (e.g. by virtualization) we need @@ -637,7 +637,7 @@ - name: Source bash completion blockinfile: - dest: "/export/home/delphix/.bashrc" + dest: "/home/delphix/.bashrc" block: | . /etc/bash_completion.d/systemctl . /etc/bash_completion.d/zfs diff --git a/files/common/var/lib/delphix-platform/export-home b/files/common/var/lib/delphix-platform/export-home new file mode 100755 index 000000000..423065aae --- /dev/null +++ b/files/common/var/lib/delphix-platform/export-home @@ -0,0 +1,51 @@ +#!/bin/bash +# +# Copyright (c) 2025 by Delphix. All rights reserved. +# + +# +# This script ensures that the /export/home is a symlink +# to /home. +# + + +# If /export/home is already a symlink to /home, do nothing +if [ -L /export/home ]; then + echo '/export/home is already exists. Nothing to do.' + exit 0 +fi + +# if /export/home and /home both are mounted - Dont do anything +# Since during the next boot /export/home will not be mounted +# Since /export/home is there all tests will be passes +if mountpoint -q /export/home; then + echo '/export/home is still mounted. Check if /home is also mounted' + if mountpoint -q /home; then + echo '/home is also mounted. Since during the next boot /export/home will not be mounted, exiting safely.' + exit 0 + else + echo '/home is not mounted. Aborting!!' + exit 1 + fi +fi + +# /export/home is not mounted, check if /home is mounted +if mountpoint -q /home; then + echo '/home is mounted. Proceeding with the unmount check for /export/home.' +else + echo '/home is not mounted. Aborting to avoid risk of data loss.' + exit 1 +fi + +# Ensure /export directory exists +mkdir -p /export + +# Create symlink +echo 'Creating symlink: /export/home -> /home' +ln -s /home /export/home +if [ $? -eq 0 ]; then + echo 'Symlink created successfully.' +else + echo 'Failed to create symlink. Please check permissions and try again.' + exit 1 +fi From c092613c7513dd2f6e0f7e7c4f9276c34e5bf9eb Mon Sep 17 00:00:00 2001 From: Sanjeev Rohila Date: Thu, 11 Sep 2025 13:09:28 +0530 Subject: [PATCH 2/2] removing /export/home since it was empty, found in manual check --- .../var/lib/delphix-platform/export-home | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/files/common/var/lib/delphix-platform/export-home b/files/common/var/lib/delphix-platform/export-home index 423065aae..30a6bc585 100755 --- a/files/common/var/lib/delphix-platform/export-home +++ b/files/common/var/lib/delphix-platform/export-home @@ -30,22 +30,34 @@ if mountpoint -q /export/home; then fi # /export/home is not mounted, check if /home is mounted +# Check if /home is mounted if mountpoint -q /home; then - echo '/home is mounted. Proceeding with the unmount check for /export/home.' + echo "/home is mounted. Proceeding with /export/home cleanup." + # If /export/home exists + if [ -d /export/home ]; then + echo "/export/home exists. Attempting to remove it..." + rmdir /export/home 2>/dev/null + if [ $? -eq 0 ]; then + echo "/export/home directory removed successfully." + else + echo "/export/home is not empty. Please clean it manually before running this script." + exit 1 + fi + fi else - echo '/home is not mounted. Aborting to avoid risk of data loss.' + echo "/home is not mounted. Aborting to avoid risk of data loss." exit 1 fi -# Ensure /export directory exists +# Ensure /export exists mkdir -p /export # Create symlink -echo 'Creating symlink: /export/home -> /home' +echo "Creating symlink: /export/home -> /home" ln -s /home /export/home if [ $? -eq 0 ]; then - echo 'Symlink created successfully.' + echo "Symlink created successfully." else - echo 'Failed to create symlink. Please check permissions and try again.' + echo "Failed to create symlink. Please check permissions and try again." exit 1 fi