From 374edaa2f3c5a7b9a271bfac139aae4f676faf8a Mon Sep 17 00:00:00 2001 From: Russ Allbery Date: Fri, 3 Aug 2007 02:53:09 +0000 Subject: [PATCH] * Apply upstream patch for the OpenAFS file server to treat clients that have an all-zero UUID as if they don't have UUID support, working around bugs in various client versions that can cause multiple hosts to use all-zero UUIDs and conflict with each other. --- debian/changelog | 6 +++++- src/viced/host.c | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index 9171e4b62..4cb141ed9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,9 @@ openafs (1.4.4.dfsg1-6) unstable; urgency=low + * Apply upstream patch for the OpenAFS file server to treat clients that + have an all-zero UUID as if they don't have UUID support, working + around bugs in various client versions that can cause multiple hosts + to use all-zero UUIDs and conflict with each other. * Use dpkg --print-architecture to determine the AFS sysname for both regular builds (avoiding --print-installation-architecture, which is deprecated) and kernel builds (avoiding arch, which is temporarily not @@ -9,7 +13,7 @@ openafs (1.4.4.dfsg1-6) unstable; urgency=low although OpenAFS currently only supports 2.4 kernels on HPPA so this isn't that useful. - -- Russ Allbery Thu, 02 Aug 2007 19:52:55 -0700 + -- Russ Allbery Thu, 02 Aug 2007 19:54:00 -0700 openafs (1.4.4.dfsg1-5) unstable; urgency=low diff --git a/src/viced/host.c b/src/viced/host.c index 99d10431c..65f16db17 100644 --- a/src/viced/host.c +++ b/src/viced/host.c @@ -74,6 +74,7 @@ extern struct afsconf_dir *confDir; /* config dir object */ extern int lwps; /* the max number of server threads */ extern afsUUID FS_HostUUID; +afsUUID nulluuid; int CEs = 0; /* active clients */ int CEBlocks = 0; /* number of blocks of CEs */ struct client *CEFree = 0; /* first free client */ @@ -1329,7 +1330,8 @@ h_GetHost_r(struct rx_connection *tcon) rx_PutConnection(cb_conn); cb_conn=NULL; H_LOCK; - if (code == RXGEN_OPCODE) { + if ((code == RXGEN_OPCODE) || + (afs_uuid_equal(&interf.uuid, &nulluuid))) { identP = (struct Identity *)malloc(sizeof(struct Identity)); if (!identP) { ViceLog(0, ("Failed malloc in h_GetHost_r\n")); @@ -1452,7 +1454,8 @@ h_GetHost_r(struct rx_connection *tcon) rx_PutConnection(cb_conn); cb_conn=NULL; H_LOCK; - if (code == RXGEN_OPCODE) { + if ((code == RXGEN_OPCODE) || + afs_uuid_equal(&interf.uuid, &nulluuid)) { if (!identP) identP = (struct Identity *)malloc(sizeof(struct Identity)); @@ -1662,6 +1665,7 @@ char local_realm[AFS_REALM_SZ] = ""; void h_InitHostPackage() { + memset(&nulluuid, 0, sizeof(afsUUID)); afsconf_GetLocalCell(confDir, localcellname, PR_MAXNAMELEN); if (!local_realm[0]) { if (afs_krb_get_lrealm(local_realm, 0) != 0 /*KSUCCESS*/) { -- 2.39.5