Hello folks, I just uploaded openafs 1.4.12.1+dfsg-3, which contains some final fixes that are targetted for squeeze based, in part, on discussion with upstream after the freeze was announced. Could you unblock it for squeeze?
Here are the annotated changes for this version: * Apply upstream deltas: - [639c0e46] ubik: ntohl on reading the replay log The bug fixed by this change caused VLDB servers on little-endian platforms to treat the replay log as invalid, possibly leading to data loss during an unclean shutdown of the service. - [fd19dd09] vol AttachByName should mimic other volpkg errors Fixes a problem with volumes going mysteriously off-line and becoming impossible to attach in the AFS fileserver, and adds logging to try to understand why this is happening. This patch has been running in production at UNCC for several weeks now. - [ebb6accf] Include com_err.h in dumpstuff.c Ensures that function declarations are available, which avoids treating the return value of afs_error_message as an integer cast to a pointer, which could lead to segfaults on 64-bit platforms. * The openafs-fileserver init script now depends on $named since apparently the volserver requires DNS during startup. Thanks, Jaap Winius. (Closes: #589783) One-line change to fix boot ordering. (I also dropped $local_fs since it's redundant with $remote_fs.) * Run the DKMS build commands in a subshell to work around a DKMS bug that caused the module build logs to be discarded. (LP: #593509) Two-line change to wrap the build commands in parens so that the output redirection done by DKMS will redirect all the output, not just the output of the last command. * Add a status command to the openafs-fileserver init script. This is work that was already in the repository which was isolated and shouldn't introduce any additional risk, so I didn't revert it for this upload. * Update standards version to 3.9.1. - Remove obsolete conflicts/replaces/provides on openafs-ptutil. openafs-ptutil is way older than oldstable, so there was no point in this. There were no other changes in the standards-version bump. Here is the full patch: diff --git a/debian/changelog b/debian/changelog index 1d52c09..7be4140 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,20 @@ +openafs (1.4.12.1+dfsg-3) unstable; urgency=low + + * Apply upstream deltas: + - [639c0e46] ubik: ntohl on reading the replay log + - [fd19dd09] vol AttachByName should mimic other volpkg errors + - [ebb6accf] Include com_err.h in dumpstuff.c + * The openafs-fileserver init script now depends on $named since + apparently the volserver requires DNS during startup. Thanks, Jaap + Winius. (Closes: #589783) + * Run the DKMS build commands in a subshell to work around a DKMS bug + that caused the module build logs to be discarded. (LP: #593509) + * Add a status command to the openafs-fileserver init script. + * Update standards version to 3.9.1. + - Remove obsolete conflicts/replaces/provides on openafs-ptutil. + + -- Russ Allbery <r...@debian.org> Tue, 10 Aug 2010 21:54:33 -0700 + openafs (1.4.12.1+dfsg-2) unstable; urgency=low * Apply upstream deltas to fix crashes in the file server: diff --git a/debian/control b/debian/control index fde7a22..33cce00 100644 --- a/debian/control +++ b/debian/control @@ -6,7 +6,7 @@ Uploaders: Sam Hartman <hartm...@debian.org> Build-Depends: debhelper (>= 7), autoconf, automake, bison, comerr-dev, cpio, dblatex, dkms (>= 2.1.1.1), docbook-xsl, doxygen, flex, libkrb5-dev, libncurses5-dev, libpam0g-dev, libxml2-utils, perl, xsltproc -Standards-Version: 3.8.4 +Standards-Version: 3.9.1 Homepage: http://www.openafs.org/ Vcs-Git: git://git.debian.org/git/pkg-k5-afs/openafs.git Vcs-Browser: http://git.debian.org/?p=pkg-k5-afs/openafs.git @@ -61,9 +61,6 @@ Architecture: alpha amd64 arm armel i386 ia64 powerpc powerpcspe ppc64 s390 s390 Depends: ${shlibs:Depends}, ${perl:Depends}, ${misc:Depends}, openafs-fileserver, openafs-client Suggests: openafs-doc -Conflicts: openafs-ptutil -Replaces: openafs-ptutil -Provides: openafs-ptutil Description: AFS distributed filesystem database server AFS is a distributed filesystem allowing cross-platform sharing of files among multiple computers. Facilities are provided for access diff --git a/debian/openafs-fileserver.init b/debian/openafs-fileserver.init index 5db0463..ea1b41f 100755 --- a/debian/openafs-fileserver.init +++ b/debian/openafs-fileserver.init @@ -1,8 +1,8 @@ #! /bin/sh ### BEGIN INIT INFO # Provides: openafs-fileserver -# Required-Start: $local_fs $remote_fs $network $time -# Required-Stop: $local_fs $remote_fs $network +# Required-Start: $remote_fs $network $time $named +# Required-Stop: $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: OpenAFS file and database server manager @@ -25,8 +25,10 @@ DAEMON=/usr/sbin/bosserver DAEMON_ARGS="" SCRIPTNAME=/etc/init.d/openafs-fileserver -# Exit if the package is not installed. -[ -x "$DAEMON" ] || exit 0 +# Exit if the package is not installed and we were not given the status option. +if [ ! -x "$DAEMON" ] && [ "status" != "$1" ] ; then + exit 0 +fi # Read configuration if it is present. [ -r /etc/default/openafs-fileserver ] && . /etc/default/openafs-fileserver @@ -109,8 +111,27 @@ case "$1" in esac ;; + status) + start-stop-daemon --start --quiet --startas $DAEMON --name $NAME --test \ + > /dev/null + case "$?" in + 0) + echo "$NAME is not running" + exit 3 + ;; + 1) + echo "$NAME is running" + exit 0 + ;; + *) + log_warning_msg "Cannot determine if $NAME is running" + exit 4 + ;; + esac + ;; + *) - echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2 exit 3 ;; esac diff --git a/debian/openafs-modules-dkms.dkms b/debian/openafs-modules-dkms.dkms index 7e4d438..3d064c7 100644 --- a/debian/openafs-modules-dkms.dkms +++ b/debian/openafs-modules-dkms.dkms @@ -8,7 +8,7 @@ BUILT_MODULE_NAME[0]="$PACKAGE_NAME" DEST_MODULE_LOCATION[0]="/updates/dkms/" AUTOINSTALL=yes -MAKE[0]="./configure --with-linux-kernel-headers=${kernel_source_dir} - && make - && mv src/libafs/MODLOAD-*/openafs.ko ." +MAKE[0]="(./configure --with-linux-kernel-headers=${kernel_source_dir} + && make + && mv src/libafs/MODLOAD-*/openafs.ko .)" CLEAN="rm -f openafs.ko && make -C src/libafs clean" diff --git a/src/ubik/recovery.c b/src/ubik/recovery.c index 33b95a3..581abe4 100644 --- a/src/ubik/recovery.c +++ b/src/ubik/recovery.c @@ -207,6 +207,7 @@ ReplayLog(register struct ubik_dbase *adbase) sizeof(afs_int32)); if (code != sizeof(afs_int32)) break; + opcode = ntohl(opcode); if (opcode == LOGNEW) { /* handle begin trans */ tpos += sizeof(afs_int32); @@ -231,7 +232,7 @@ ReplayLog(register struct ubik_dbase *adbase) if (code != 3 * sizeof(afs_int32)) break; /* otherwise, skip over the data bytes, too */ - tpos += buffer[2] + 3 * sizeof(afs_int32); + tpos += ntohl(buffer[2]) + 3 * sizeof(afs_int32); } else { ubik_dprint("corrupt log opcode (%d) at position %d\n", opcode, tpos); @@ -250,6 +251,7 @@ ReplayLog(register struct ubik_dbase *adbase) sizeof(afs_int32)); if (code != sizeof(afs_int32)) break; + opcode = ntohl(opcode); if (opcode == LOGNEW) { /* handle begin trans */ tpos += sizeof(afs_int32); diff --git a/src/vol/volume.c b/src/vol/volume.c index 503dda2..8af3c66 100644 --- a/src/vol/volume.c +++ b/src/vol/volume.c @@ -979,6 +979,20 @@ attach2(Error * ec, char *path, register struct VolumeHeader * header, V_inUse(vp) = 1; V_offlineMessage(vp)[0] = '\0'; } + if (!V_inUse(vp)) { + *ec = VNOVOL; + /* mimic e.g. GetVolume errors */ + if (!V_blessed(vp)) + Log("Volume %u offline: not blessed\n", V_id(vp)); + else if (!V_inService(vp)) + Log("Volume %u offline: not in service\n", V_id(vp)); + else { + Log("Volume %u offline: needs salvage\n", V_id(vp)); + *ec = VOFFLINE; + } + VPutVolume_r(vp); + vp = NULL; + } } return vp; diff --git a/src/volser/dumpstuff.c b/src/volser/dumpstuff.c index f8ff68d..6989254 100644 --- a/src/volser/dumpstuff.c +++ b/src/volser/dumpstuff.c @@ -45,6 +45,7 @@ #include "dump.h" #include <afs/fssync.h> #include <afs/acl.h> +#include <afs/com_err.h> #include "volser.h" #include "volint.h" -- Russ Allbery (r...@debian.org) <http://www.eyrie.org/~eagle/> -- To UNSUBSCRIBE, email to debian-release-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87wrrxkm45....@windlord.stanford.edu