Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
emulab
emulab-devel
Commits
31f8ea31
Commit
31f8ea31
authored
Mar 14, 2015
by
Mike Hibler
Browse files
Integrate zapdisk into the frisbee MFS.
parent
e2a18de5
Changes
5
Hide whitespace changes
Inline
Side-by-side
clientside/os/GNUmakefile.in
View file @
31f8ea31
...
...
@@ -25,6 +25,7 @@ TESTBED_SRCDIR = @top_srcdir@
OBJDIR = @top_builddir@
SUBDIR = $(subst $(TESTBED_SRCDIR)/,,$(SRCDIR))
SYSTEM := $(shell uname -s)
CBINDIR = $(DESTDIR)$(CLIENT_BINDIR)
LBINDIR = $(DESTDIR)/usr/local/bin
LSBINDIR = $(DESTDIR)/usr/local/sbin
SYSTEM := $(shell uname -s)
...
...
@@ -86,7 +87,6 @@ endif
mfs:
$(MAKE) -C growdisk client
$(MAKE) -C zapdisk mfs
$(MAKE) -C growdisk client
$(MAKE) -C imagezip client
$(MAKE) -C frisbee.redux client
...
...
@@ -110,25 +110,31 @@ distclean: subdir-distclean
frisbee-mfs:
$(MAKE) -C growdisk client
$(MAKE) -C zapdisk mfs
$(MAKE) -C frisbee.redux client
frisbee-mfs-install:
ifeq ($(SYSTEM),FreeBSD)
CLIENT_BINDIR=/etc/testbed $(MAKE) -e -C growdisk client-install
CLIENT_BINDIR=/etc/testbed $(MAKE) -e -C frisbee.redux client-install
CLIENT_BINDIR=/etc/testbed $(MAKE) -e -C growdisk client-install
CLIENT_BINDIR=/etc/testbed $(MAKE) -e -C zapdisk frisbee-mfs-install
else
CLIENT_BINDIR=/usr/local/bin $(MAKE) -e -C growdisk client-install
CLIENT_BINDIR=/usr/local/bin $(MAKE) -e -C frisbee.redux client-install
$(MAKE) -C growdisk client-install
$(MAKE) -C zapdisk frisbee-mfs-install
rm -f $(CBINDIR)/frisbee $(CBINDIR)/frisupload
endif
mfs-install:
$(MAKE) -C zapdisk mfs-install
$(MAKE) -C imagezip client-install
CLIENT_BINDIR=/usr/local/bin $(MAKE) -e -C growdisk client-install
CLIENT_BINDIR=/usr/local/bin $(MAKE) -e -C frisbee.redux client-install
$(MAKE) -C frisbee.redux client-install
$(MAKE) -C growdisk client-install
$(MAKE) -C zapdisk mfs-install
$(INSTALL_PROGRAM) $(SRCDIR)/create-image $(LBINDIR)/
$(INSTALL_PROGRAM) $(SRCDIR)/create-versioned-image $(LBINDIR)/
$(INSTALL_PROGRAM) $(SRCDIR)/create-swapimage $(LBINDIR)/
rm -f $(CBINDIR)/frisbee $(CBINDIR)/frisupload
rm -f $(CBINDIR)/imagezip $(CBINDIR)/imageunzip $(CBINDIR)/imagedump
newnode-mfs: mfs
newnode-mfs-install: mfs-install
...
...
clientside/os/zapdisk/GNUmakefile.in
View file @
31f8ea31
...
...
@@ -67,11 +67,14 @@ $(PARTLIBS):
install:
mfs: zapdisk
mfs frisbee-
mfs: zapdisk
mfs-install: mfs
$(INSTALL_PROGRAM) -m 700 -s zapdisk$(EXE) $(CBINDIR)/zapdisk$(EXE)
$(INSTALL_PROGRAM) -m 700 $(SRCDIR)/diskzap $(LBINDIR)/diskzap
frisbee-mfs-install: frisbee-mfs
$(INSTALL_PROGRAM) -m 700 -s zapdisk$(EXE) $(CBINDIR)/zapdisk$(EXE)
clean:
rm -f *.o zapdisk zapdisk.debug
clientside/tmcc/freebsd/rc.frisbee
View file @
31f8ea31
...
...
@@ -162,6 +162,14 @@ find_disks() {
zapsuperblocks
()
{
_DSK
=
$1
echo
"Invalidating old potential superblocks on
$_DSK
"
if
[
-x
"
$BINDIR
/zapdisk"
]
;
then
$BINDIR
/zapdisk
-v
-SZ
/dev/
$_DSK
return
fi
# XXX fall back to the old way
#
# Note we are not overly concerned about the consequences of misparsing
# the fdisk output. If we whack random blocks, it doesn't hurt anything.
...
...
@@ -558,12 +566,13 @@ case $STATUS in
disks
=
`
find_disks
`
for
d
in
$disks
;
do
#[ $d = $DISK ] && continue
mount |
grep
"^/dev/
$d
"
>
/dev/null
&&
continue
zapsuperblocks
$d
echo
"Invalidating MBR/GPT on
$d
"
if
[
-x
/sbin/gpart
]
;
then
gpart destroy
-F
$d
mount |
grep
"^/dev/
$d
"
>
/dev/null
&&
continue
if
[
-x
"
$BINDIR
/zapdisk"
]
;
then
echo
"Invalidating superblocks and MBR/GPT on
$d
"
$BINDIR
/zapdisk
-v
-SBZ
/dev/
$d
else
zapsuperblocks
$d
echo
"Invalidating MBR/GPT on
$d
"
dd
if
=
/dev/zero
of
=
/dev/
$d
bs
=
512
count
=
16
fi
done
...
...
clientside/tmcc/linux-ms/mfs/rc.frisbee
View file @
31f8ea31
...
...
@@ -207,9 +207,15 @@ zapsuperblocks()
local
disk
=
${
1
##*/
}
echo
"Invalidating old potential superblocks on
$disk
"
if
[
-x
"
$BINDIR
/zapdisk"
]
;
then
$BINDIR
/zapdisk
-v
-SZ
/dev/
$disk
return
fi
# XXX fall back to the old way
partitions
=
`
echo
/sys/block/
$disk
/
$disk
*
2>/dev/null
`
for
part
in
$partitions
;
do
dd
if
=
/dev/zero
of
=
/dev/
${
part
##*/
}
bs
=
512
count
=
16
>
/dev/null 2>&1
dd
if
=
/dev/zero
of
=
/dev/
${
part
##*/
}
bs
=
512
count
=
16
>
/dev/null 2>&1
done
return
0
...
...
@@ -567,10 +573,15 @@ case $STATUS in
for
d
in
$disks
;
do
#[ $d = $DISK ] && continue
mount |
grep
"^/dev/
$d
"
>
/dev/null
&&
continue
zapsuperblocks
$d
echo
"Invalidating MBR on
$d
"
sgdisk
-Z
/dev/
$d
>
/dev/null 2>&1
dd
if
=
/dev/zero
of
=
/dev/
$d
bs
=
512
count
=
16
if
[
-x
"
$BINDIR
/zapdisk"
]
;
then
echo
"Invalidating superblocks and MBR/GPT on
$d
"
$BINDIR
/zapdisk
-v
-SBZ
/dev/
$d
else
zapsuperblocks
$d
echo
"Invalidating MBR/GPT on
$d
"
sgdisk
-Z
/dev/
$d
>
/dev/null 2>&1
dd
if
=
/dev/zero
of
=
/dev/
$d
bs
=
512
count
=
16
fi
done
#
...
...
clientside/tmcc/linux/rc.frisbee
View file @
31f8ea31
#!/bin/sh
#
# Copyright (c) 2000-201
4
University of Utah and the Flux Group.
# Copyright (c) 2000-201
5
University of Utah and the Flux Group.
#
# {{{EMULAB-LICENSE
#
...
...
@@ -189,9 +189,15 @@ zapsuperblocks()
local
disk
=
${
1
##*/
}
echo
"Invalidating old potential superblocks on
$disk
"
if
[
-x
"
$BINDIR
/zapdisk"
]
;
then
$BINDIR
/zapdisk
-v
-SZ
/dev/
$disk
return
fi
# XXX fall back to the old way
partitions
=
`
echo
/sys/block/
$disk
/
$disk
*
2>/dev/null
`
for
part
in
$partitions
;
do
dd
if
=
/dev/zero
of
=
/dev/
${
part
##*/
}
bs
=
512
count
=
16
>
/dev/null 2>&1
dd
if
=
/dev/zero
of
=
/dev/
${
part
##*/
}
bs
=
512
count
=
16
>
/dev/null 2>&1
done
return
0
...
...
@@ -575,21 +581,32 @@ FRISBEE_OPTS="$FRISBEE_OPTS -k $MAXSOCKBUF"
# Wipe the MBR and partition boot blocks on all disks if reloading
case
$STATUS
in
*
ALLOCATED
=
emulab-ops/reloading
*
)
disks
=
`
find_disks
`
for
d
in
$disks
;
do
#[ $d = $DISK ] && continue
mount |
grep
"^/dev/
$d
"
>
/dev/null
&&
continue
zapsuperblocks /dev/
$d
echo
"Invalidating MBR on /dev/
$d
"
dd
if
=
/dev/zero
of
=
/dev/
$d
bs
=
512
count
=
16
done
# XXX tmp, gather HW info (including disk speed tests)
if
[
-x
$BINDIR
/rc.nodecheck
]
;
then
$BINDIR
/rc.nodecheck boot
fi
;;
*
ALLOCATED
=
emulab-ops/reloading
*
)
disks
=
`
find_disks
`
for
d
in
$disks
;
do
#[ $d = $DISK ] && continue
mount |
grep
"^/dev/
$d
"
>
/dev/null
&&
continue
if
[
-x
"
$BINDIR
/zapdisk"
]
;
then
echo
"Invalidating superblocks and MBR/GPT on
$d
"
$BINDIR
/zapdisk
-v
-SBZ
/dev/
$d
else
zapsuperblocks /dev/
$d
echo
"Invalidating MBR/GPT on /dev/
$d
"
# XXX not in the Linux MFS yet
#sgdisk -Z /dev/$d >/dev/null 2>&1
dd
if
=
/dev/zero
of
=
/dev/
$d
bs
=
512
count
=
16
fi
done
#
# If we have nodecheck, run it. This allows us to both collect HW info
# (if nodecheck "collect" is enabled in the DB) and to run a destructive
# disk write speed test (as part of a nodecheck "check" operation).
#
if
[
-x
$BINDIR
/rc.nodecheck
]
;
then
$BINDIR
/rc.nodecheck boot
fi
;;
esac
#
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment