X-Git-Url: http://git.ipfire.org/?p=people%2Fpmueller%2Fipfire-2.x.git;a=blobdiff_plain;f=src%2Finitscripts%2Finit.d%2Ffunctions;fp=src%2Finitscripts%2Finit.d%2Ffunctions;h=fc4d8a4b9aff01f43884b60f55d169d3f93a5b98;hp=bd2c946e0de6ae62217e5a7235492e63fd81b4f9;hb=6146d1904aad28f0bacbb6986205c28bb7020356;hpb=84c5f0d66d5312005a2c7528dbf686dc1968cd10 diff --git a/src/initscripts/init.d/functions b/src/initscripts/init.d/functions index bd2c946e0d..fc4d8a4b9a 100644 --- a/src/initscripts/init.d/functions +++ b/src/initscripts/init.d/functions @@ -743,29 +743,45 @@ use_ramdisk() { } mount_ramdisk() { - mount -t tmpfs none $1 -} + local path="${1}" + local path_tmpfs="${path}.tmpfs" -umount_ramdisk() { - if mountpoint $1 &>/dev/null; then - umount $1 + # Check if the ramdisk is already mounted + if mountpoint "${path}" &>/dev/null; then + return 0 fi -} -backup_ramdisk() { - if [ ! -e $1.bak ]; then - mkdir -p $1.bak - fi + # Create ramdisk + mkdir -p "${path_tmpfs}" + mount -t tmpfs none "${path_tmpfs}" + + # Restore ramdisk content + cp -pR "${path}/*" "${path_tmpfs}" - cp -pR $1/* $1.bak/ - rm -rf $1/* + # Move ramdisk to final destination + mount --move "${path_tmpfs}" "${path}" + rm -f "${path_tmpfs}" } -restore_ramdisk() { - if [ -e $1.bak ];then - cp -pR $1.bak/* $1/ - rm -rf $1.bak/* +umount_ramdisk() { + local path="${1}" + local path_tmpfs="${path}.tmpfs" + + # Check if a ramdisk is actually mounted + if ! mountpoint "${path}" &>/dev/null; then + return 0 fi + + # Move the ramdisk + mkdir -p "${path_tmpfs}" + mount --move "${path}" "${path_tmpfs}" + + # Backup ramdisk content + cp -pR "${path_tmpfs}/*" "${path}" + + # Destroy the ramdisk + umount "${path_tmpfs}" + rm -f "${path_tmpfs}" } # End $rc_base/init.d/functions