18
18
# Description: Ceph RBD Mapping
19
19
# ## END INIT INFO
20
20
21
- DESC=" RBD Mapping"
21
+ DESC=" RBD Mapping: "
22
22
RBDMAPFILE=" /etc/ceph/rbdmap"
23
23
24
24
. /lib/lsb/init-functions
@@ -29,9 +29,7 @@ do_map() {
29
29
exit 0
30
30
fi
31
31
32
- log_daemon_msg " Starting $DESC "
33
32
# Read /etc/rbdtab to create non-existant mapping
34
- newrbd=
35
33
RET=0
36
34
while read DEV PARAMS; do
37
35
case " $DEV " in
@@ -44,46 +42,70 @@ do_map() {
44
42
DEV=rbd/$DEV
45
43
;;
46
44
esac
45
+ log_action_begin_msg " ${DESC} '${DEV} '"
46
+ newrbd=" "
47
+ MAP_RV=" "
48
+ RET_OP=0
47
49
OIFS=$IFS
48
50
IFS=' ,'
49
51
for PARAM in ${PARAMS[@]} ; do
50
52
CMDPARAMS=" $CMDPARAMS --$( echo $PARAM | tr ' =' ' ' ) "
51
53
done
52
54
IFS=$OIFS
53
55
if [ ! -b /dev/rbd/$DEV ]; then
54
- log_progress_msg $DEV
55
- rbd map $DEV $CMDPARAMS
56
- [ $? -ne " 0" ] && RET=1
57
- newrbd=" yes"
56
+ MAP_RV=$( rbd map $DEV $CMDPARAMS 2>&1 )
57
+ if [ $? -eq 0 ]; then
58
+ newrbd=" yes"
59
+ else
60
+ RET=$(( ${RET} + $? ))
61
+ RET_OP=1
62
+ fi
63
+ fi
64
+ log_action_end_msg ${RET_OP} " ${MAP_RV} "
65
+
66
+ if [ " $newrbd " ]; then
67
+ # # Mount new rbd
68
+ MNT_RV=" "
69
+ mount --fake /dev/rbd/$DEV >> /dev/null 2>&1 \
70
+ && MNT_RV=$( mount -v /dev/rbd/$DEV 2>&1 )
71
+ [ -n " ${MNT_RV} " ] && log_action_msg " mount: ${MNT_RV} "
58
72
fi
59
73
done < $RBDMAPFILE
60
- log_end_msg $ RET
74
+ exit ${ RET}
61
75
62
- # Mount new rbd
63
- if [ " $newrbd " ]; then
64
- log_action_begin_msg " Mounting all filesystems"
65
- mount -a
66
- log_action_end_msg $?
67
- fi
68
76
}
69
77
70
78
do_unmap () {
71
- log_daemon_msg " Stopping $DESC "
72
79
RET=0
73
- # Recursive umount that depends /dev/rbd*
74
- MNTDEP=$( findmnt --mtab | awk ' $2 ~ /^\/dev\/rbd[0-9]*$/ {print $1}' | sort -r)
75
- for MNT in $MNTDEP ; do
76
- umount $MNT
77
- done
78
- # Unmap all rbd device
80
+ # # Unmount and unmap all rbd devices
79
81
if ls /dev/rbd[0-9]* > /dev/null 2>&1 ; then
80
82
for DEV in /dev/rbd[0-9]* ; do
81
- log_progress_msg $DEV
82
- rbd unmap $DEV
83
- [ $? -ne " 0" ] && RET=1
83
+ log_action_begin_msg " RBD un-mapping: '${DEV} '"
84
+ UMNT_RV=" "
85
+ UMAP_RV=" "
86
+ RET_OP=0
87
+ MNT=$( findmnt --mtab --source ${DEV} --noheadings | awk ' {print $1' })
88
+ if [ -n " ${MNT} " ]; then
89
+ log_action_cont_msg " un-mounting '${MNT} '"
90
+ UMNT_RV=$( umount " ${MNT} " 2>&1 )
91
+ fi
92
+ if mountpoint -q " ${MNT} " ; then
93
+ # # Un-mounting failed.
94
+ RET_OP=1
95
+ RET=$(( ${RET} + 1 ))
96
+ else
97
+ # # Un-mapping.
98
+ UMAP_RV=$( rbd unmap $DEV 2>&1 )
99
+ if [ $? -ne 0 ]; then
100
+ RET=$(( ${RET} + $? ))
101
+ RET_OP=1
102
+ fi
103
+ fi
104
+ log_action_end_msg ${RET_OP} " ${UMAP_RV} "
105
+ [ -n " ${UMNT_RV} " ] && log_action_msg " ${UMNT_RV} "
84
106
done
85
107
fi
86
- log_end_msg $ RET
108
+ exit ${ RET}
87
109
}
88
110
89
111
@@ -114,5 +136,3 @@ case "$1" in
114
136
exit 1
115
137
;;
116
138
esac
117
-
118
- exit 0
0 commit comments