Hi Laurent, I went ahead and merged this. Thanks! sage On Mon, 24 Jun 2013, Sage Weil wrote: > Hi Laurent, > > I opened a github pull request for this at > > https://github.com/ceph/ceph/pull/378 > > We might consider putting /etc/rbdmap in /etc/ceph/rbdmap to avoid > polluting /etc... Dan, can you take a look? > > Thanks! > sage > > > On Fri, 21 Jun 2013, Laurent Barbe wrote: > > > Init script for mapping/unmapping rbd device on startup and shutdown. > > On start, map rbd dev according to /etc/rbdmap, and force mount -a > > On stop, umount file system depending on rbd and unmap all rbd > > Since some distribution use symlink for /etc/mtab, the user-space attribute _netdev is not enough to umount file system before rbd dev. > > (also concern: #1790) > > > > Signed-off-by: Laurent Barbe <laurent@xxxxxxxxxxx> > > --- > > src/init-rbdmap | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > > src/rbdmap | 3 ++ > > 2 files changed, 106 insertions(+) > > create mode 100755 src/init-rbdmap > > create mode 100644 src/rbdmap > > > > diff --git a/src/init-rbdmap b/src/init-rbdmap > > new file mode 100755 > > index 0000000..a2187ce > > --- /dev/null > > +++ b/src/init-rbdmap > > @@ -0,0 +1,103 @@ > > +#!/bin/bash > > + > > +### BEGIN INIT INFO > > +# Provides: rbdmap > > +# Required-Start: $network > > +# Required-Stop: $network > > +# Default-Start: 2 3 4 5 > > +# Default-Stop: 0 1 6 > > +# Short-Description: Ceph RBD Mapping > > +# Description: Ceph RBD Mapping > > +### END INIT INFO > > + > > +DESC="RBD Mapping" > > +RBDMAPFILE="/etc/rbdmap" > > + > > +. /lib/lsb/init-functions > > + > > +do_map() { > > + if [ ! -f "$RBDMAPFILE" ]; then > > + log_warning_msg "$DESC : No $RBDMAPFILE found." > > + exit 0 > > + fi > > + > > + log_daemon_msg "Starting $DESC" > > + # Read /etc/rbdtab to create non-existant mapping > > + newrbd= > > + RET=0 > > + while read DEV PARAMS; do > > + case "$DEV" in > > + ""|\#*) > > + continue > > + ;; > > + */*) > > + ;; > > + *) > > + DEV=rbd/$DEV > > + ;; > > + esac > > + OIFS=$IFS > > + IFS=',' > > + for PARAM in ${PARAMS[@]}; do > > + CMDPARAMS="$CMDPARAMS --$(echo $PARAM | tr '=' ' ')" > > + done > > + IFS=$OIFS > > + if [ ! -b /dev/rbd/$DEV ]; then > > + log_progress_msg $DEV > > + rbd map $DEV $CMDPARAMS > > + [ $? -ne "0" ] && RET=1 > > + newrbd="yes" > > + fi > > + done < $RBDMAPFILE > > + log_end_msg $RET > > + > > + # Mount new rbd > > + if [ "$newrbd" ]; then > > + log_action_begin_msg "Mounting all filesystems" > > + mount -a > > + log_action_end_msg $? > > + fi > > +} > > + > > +do_unmap() { > > + log_daemon_msg "Stopping $DESC" > > + RET=0 > > + # Unmap all rbd device > > + for DEV in /dev/rbd[0-9]*; do > > + log_progress_msg $DEV > > + # Umount before unmap > > + MNTDEP=$(findmnt --mtab --source $DEV --output TARGET | sed 1,1d | sort -r) > > + for MNT in $MNTDEP; do > > + umount $MNT || sleep 1 && umount -l $DEV > > + done > > + rbd unmap $DEV > > + [ $? -ne "0" ] && RET=1 > > + done > > + log_end_msg $RET > > +} > > + > > + > > +case "$1" in > > + start) > > + do_map > > + ;; > > + > > + stop) > > + do_unmap > > + ;; > > + > > + reload) > > + do_map > > + ;; > > + > > + status) > > + rbd showmapped > > + ;; > > + > > + *) > > + log_success_msg "Usage: rbdmap {start|stop|reload|status}" > > + exit 1 > > + ;; > > +esac > > + > > +exit 0 > > diff --git a/src/rbdmap b/src/rbdmap > > new file mode 100644 > > index 0000000..9d34e9e > > --- /dev/null > > +++ b/src/rbdmap > > @@ -0,0 +1,3 @@ > > +# RbdDevice Parameters > > +#rbd/rbddevice id=client,keyring=/etc/ceph/ceph.client.keyring > > + > > -- > > 1.8.1.2 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > > the body of a message to majordomo@xxxxxxxxxxxxxxx > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html