@@ -10,19 +10,40 @@ isSafe () {
10
10
[ -d $HDD_LOG / ] || exit 1
11
11
}
12
12
13
+ remountRW () {
14
+ touch $HDD_LOG /$$ 2> /dev/null > /dev/null
15
+ RESU=$?
16
+ INITIAL_STATUS=ro
17
+ if [ " $RESU " != " 0" ] ; then
18
+ mount -o remount,rw ${HDD_LOG}
19
+ else
20
+ INITIAL_STATUS=rw
21
+ rm $HDD_LOG /$$ 2> /dev/null
22
+ fi
23
+ # for return
24
+ echo $INITIAL_STATUS
25
+ }
26
+
27
+ remountOriginal () {
28
+ OPTION=$1
29
+ mount -o remount,${OPTION} ${HDD_LOG}
30
+ }
31
+
13
32
syncToDisk () {
14
33
isSafe
15
-
34
+ INITIAL_STATE=$( remountRW)
35
+
16
36
if [ " $USE_RSYNC " = true ]; then
17
37
rsync -aXv --inplace --no-whole-file --delete-after $RAM_LOG / $HDD_LOG / 2>&1 | tee -a $LOG2RAM_LOG
18
38
else
19
39
cp -rfup $RAM_LOG / -T $HDD_LOG / 2>&1 | tee -a $LOG2RAM_LOG
20
40
fi
41
+ remountOriginal ${INITIAL_STATE}
21
42
}
22
43
23
44
syncFromDisk () {
24
45
isSafe
25
-
46
+
26
47
TP_SIZE=$SIZE
27
48
if [ " $ZL2R " = true ]; then
28
49
TP_SIZE=$LOG_DISK_SIZE
@@ -43,6 +64,7 @@ syncFromDisk () {
43
64
else
44
65
cp -rfup $HDD_LOG / -T $RAM_LOG / 2>&1 | tee -a $LOG2RAM_LOG
45
66
fi
67
+
46
68
}
47
69
48
70
wait_for () {
@@ -65,6 +87,22 @@ createZramLogDrive () {
65
87
mke2fs -t ext4 /dev/zram${RAM_DEV}
66
88
}
67
89
90
+ make_log_dir () {
91
+ # if create mount failed, try to remount in rw the parent directory
92
+ # and restore original status
93
+ if [ ! -d $HDD_LOG / ] ; then
94
+ mkdir $HDD_LOG / 2> /dev/null /dev/null
95
+ RESU=$?
96
+ if [ " $RESU " -ne " 0" ] ; then
97
+ MOUNT_POINT=$( findmnt -T ` dirname $HDD_LOG / ` -n --raw | cut -d ' ' -f 1 )
98
+ mount -o remount,rw ${MOUNT_POINT}
99
+ sleep 0.1
100
+ mkdir $HDD_LOG /
101
+ mount -o remount,ro ${MOUNT_POINT}
102
+ fi
103
+ fi
104
+ }
105
+
68
106
case " $1 " in
69
107
start)
70
108
IFS=' ;'
@@ -74,17 +112,16 @@ case "$1" in
74
112
RAM_LOG=$i
75
113
HDD_LOG=$PATH_FIRST_PART /hdd.$PATH_LAST_PART
76
114
LOG2RAM_LOG=" ${RAM_LOG} /${LOG_NAME} "
77
-
78
- [ -d $HDD_LOG / ] || mkdir $HDD_LOG /
79
- mount --bind $RAM_LOG / $HDD_LOG /
115
+ make_log_dir
116
+ mount --bind $RAM_LOG / $HDD_LOG /
80
117
mount --make-private $HDD_LOG /
81
118
wait_for $HDD_LOG
82
-
119
+
83
120
if [ " $ZL2R " = true ]; then
84
121
createZramLogDrive
85
- mount -t ext4 -o nosuid,noexec,nodev,user=log2ram /dev/zram${RAM_DEV} ${RAM_LOG} /
122
+ mount -t ext4 -o nosuid,noexec,noatime, nodev,user=log2ram /dev/zram${RAM_DEV} ${RAM_LOG} /
86
123
else
87
- mount -t tmpfs -o nosuid,noexec,nodev,mode=0755,size=${SIZE} log2ram $RAM_LOG /
124
+ mount -t tmpfs -o nosuid,noexec,noatime, nodev,mode=0755,size=${SIZE} log2ram $RAM_LOG /
88
125
fi
89
126
wait_for $RAM_LOG
90
127
syncFromDisk
0 commit comments