4 # Read /etc/rbdtab to create non-existant mapping
6 while read DEV PARAMS; do
17 logger -p "daemon.debug" -t rbdmap "Mapping '${DEV}'"
23 for PARAM in ${PARAMS[@]}; do
24 CMDPARAMS="$CMDPARAMS --$(echo $PARAM | tr '=' ' ')"
27 if [ -b /dev/rbd/$DEV ]; then
28 MAP_RV="$(readlink -f /dev/rbd/$DEV)"
30 MAP_RV="$(rbd map $DEV $CMDPARAMS 2>&1)"
35 logger -p "daemon.warning" -t rbdmap "Failed to map '${DEV}"
39 logger -p "daemon.debug" -t rbdmap "Mapped '${DEV}' to '${MAP_RV}'"
41 if [ "$newrbd" ]; then
44 mount --fake /dev/rbd/$DEV >>/dev/null 2>&1 \
45 && MNT_RV=$(mount -vn /dev/rbd/$DEV 2>&1)
46 [ -n "${MNT_RV}" ] && logger -p "daemon.debug" -t rbdmap "Mounted '${MAP_RV}' to '${MNT_RV}'"
49 if [ -x "/etc/ceph/rbd.d/${DEV}" ]; then
50 logger -p "daemon.debug" -t rbdmap "Running post-map hook '/etc/ceph/rbd.d/${DEV}'"
51 /etc/ceph/rbd.d/${DEV} map "/dev/rbd/${DEV}"
61 local mnts=$(findmnt --mtab --source ${rbd_dev} --noheadings \
64 logger -p "daemon.debug" -t rbdmap "Unmapping '${rbd_dev}'"
65 for mnt in ${mnts}; do
66 logger -p "daemon.debug" -t rbdmap "Unmounting '${mnt}'"
67 umount "${mnt}" >>/dev/null 2>&1
68 if mountpoint -q "${mnt}"; then
69 ## Un-mounting failed.
70 logger -p "daemon.warning" -t rbdmap "Failed to unmount '${mnt}'"
75 rbd unmap $rbd_dev >>/dev/null 2>&1
77 logger -p "daemon.warning" -t rbdmap "Failed to unmap '${mnt}'"
80 logger -p "daemon.debug" -t rbdmap "Unmapped '${rbd_dev}'"
87 ## Unmount and unmap all rbd devices
88 if ls /dev/rbd[0-9]* >/dev/null 2>&1; then
89 for DEV in /dev/rbd[0-9]*; do
91 for L in $(find /dev/rbd -type l); do
93 if [ "$(readlink -f $L)" = "${DEV}" ] \
94 && [ -x "/etc/ceph/rbd.d/${LL}" ]; then
95 logger -p "daemon.debug" -t rbdmap "Running pre-unmap hook for '${DEV}': '/etc/ceph/rbd.d/${LL}'"
96 /etc/ceph/rbd.d/${LL} unmap "$L"
101 unmount_unmap "$DEV" || RET=$((${RET}+$?))
110 ## skip if nothing is mapped
111 ls /dev/rbd[0-9]* >/dev/null 2>&1 || exit ${RET}
113 # Read /etc/rbdtab to create non-existant mapping
114 while read DEV PARAMS; do
126 MAP_RV="$(readlink -f /dev/rbd/$DEV)"
127 if [ ! -b $MAP_RV ]; then
128 logger -p "daemon.debug" -t rbdmap "$DEV not mapped, skipping unmap"
133 if [ -x "/etc/ceph/rbd.d/${DEV}" ]; then
134 logger -p "daemon.debug" -t rbdmap "Running pre-unmap hook '/etc/ceph/rbd.d/${DEV}'"
135 /etc/ceph/rbd.d/${DEV} unmap "/dev/rbd/${DEV}"
138 unmount_unmap "$MAP_RV" || RET=$((${RET}+$?))
144 # default to reasonable value if RBDMAPFILE not set in environment
145 RBDMAPFILE="${RBDMAPFILE:-/etc/ceph/rbdmap}"
147 if [ ! -f "$RBDMAPFILE" ]; then
148 logger -p "daemon.warning" -t rbdmap "No $RBDMAPFILE found."
166 echo "Usage: rbdmap map | unmap | unmap-all"