| #!/bin/bash |
| |
| # Mount an NFS export for remote log storage. |
| |
| # Copyright (C) 2003-2006 IBM |
| # |
| # This program is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU General Public License as |
| # published by the Free Software Foundation; either version 2 of the |
| # License, or (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, but |
| # WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| # General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software |
| # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
| # 02111-1307, USA. |
| |
| # @author Sarunya Jimenez (sjimen@us.ibm.com) |
| # Reworked by Darrick Wong <djwong@us.ibm.com> |
| # - If unable to connect to NFS_SERVER => save log files in local machine |
| # - Otherwise, |
| # 1. log files produced from ./pounder will be in |
| # NFS_LOGSERVER (e.g. 10.0.0.211) |
| # |--- /pounder |
| # |--- /$HOSTNAME (e.g. testbox) |
| # |--- KERNEL_VERSION-ARCH (e.g. 2.6.14-i686) |
| # 2. Run "$./pounder -u" to umount nfs log server |
| # Otherwise, by default, when ./pounder completed, nfs remains |
| # mounted to the local machine. |
| # ASSUMPTION : Already imported global variables from "libpounder.sh" |
| |
| if [ -z "$NFS_LOGSERVER" -o -z "$NFS_LOGDIR" ]; then |
| echo "NFS log server not configured." |
| exit 0 |
| fi |
| |
| # Path construction: |
| |
| #nfsserv:/crash/pounder-logs/testbox/2.6.14-i686/somedate/ |
| #$NFS_LOGSERVER:$NFS_LOGDIR/$NFS_LOGLOCAL/$DATE |
| |
| #/home/pounder/log |
| #$POUNDER_LOGLOCAL |
| |
| #/home/pounder/log/somedate |
| #$POUNDER_LOGDIR or $POUNDER_LOGLOCAL/$DATE |
| |
| # Are we already mounted? |
| IS_MOUNTED=`grep "$POUNDER_LOGLOCAL " /proc/mounts | wc -l` |
| if [ $IS_MOUNTED -eq 1 ]; then |
| echo "Log directory already mounted on $POUNDER_LOGLOCAL" |
| exit 0 |
| fi |
| |
| # Create local directory for mounting |
| mkdir -p "$POUNDER_LOGLOCAL/" |
| if [ ! -d "$POUNDER_LOGLOCAL/" ]; then |
| echo "Cannot create $POUNDER_LOGLOCAL/." |
| exit 1 |
| fi |
| |
| # Mount NFS log server's top-level log dir |
| mount "$NFS_LOGSERVER:$NFS_LOGDIR/" "$POUNDER_LOGLOCAL/" -t nfs -o tcp |
| RESULT=$? |
| |
| if [ $RESULT -gt 0 ]; then |
| echo "Mounting $NFS_LOGSERVER:$NFS_LOGDIR/ on $POUNDER_LOGLOCAL/ failed; logs will be local." |
| exit 2; |
| fi |
| |
| # Create a directory for this run's log files |
| mkdir -p "$POUNDER_LOGLOCAL/$NFS_LOGLOCAL/" |
| if [ ! -d "$POUNDER_LOGLOCAL/$NFS_LOGLOCAL/" ]; then |
| echo "Cannot create local log dir on log server $POUNDER_LOGLOCAL/$NFS_LOGLOCAL/; logs will be local." |
| umount "$POUNDER_LOGLOCAL/" |
| exit 3 |
| fi |
| |
| # Now remount the real log dir on our local machine. |
| umount "$POUNDER_LOGLOCAL/" |
| mount "$NFS_LOGSERVER:$NFS_LOGDIR/$NFS_LOGLOCAL/" "$POUNDER_LOGLOCAL/" -t nfs -o tcp |
| RESULT=$? |
| |
| if [ $RESULT -gt 0 ]; then |
| echo "Mounting $NFS_LOGSERVER:$NFS_LOGDIR/$NFS_LOGLOCAL on $POUNDER_LOGLOCAL/ failed; logs will be local." |
| exit 4; |
| fi |
| |
| # Once we return to pounder, it'll create $POUNDER_LOGDIR. |
| |
| exit 0 |