]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
* Apply upstream patch for the OpenAFS file server to treat clients that debian/1.4.4.dfsg1-6
authorRuss Allbery <rra@debian.org>
Fri, 3 Aug 2007 02:53:09 +0000 (02:53 +0000)
committerRuss Allbery <rra@debian.org>
Fri, 3 Aug 2007 02:53:09 +0000 (02:53 +0000)
  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
src/viced/host.c

index 9171e4b62687f5137b8fe5d0e308374ece322074..4cb141ed959d9b55032d11bd42d5087f7476add4 100644 (file)
@@ -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 <rra@debian.org>  Thu, 02 Aug 2007 19:52:55 -0700
+ -- Russ Allbery <rra@debian.org>  Thu, 02 Aug 2007 19:54:00 -0700
 
 openafs (1.4.4.dfsg1-5) unstable; urgency=low
 
index 99d10431cd84ab1a0628e009d92c900d932efbad..65f16db17cb6e085407ca88d07eaa89fe9a5263d 100644 (file)
@@ -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*/) {