Generalise the new background daemon code
authorSimon Wilkinson <sxw@your-file-system.com>
Fri, 9 Sep 2011 06:46:01 +0000 (07:46 +0100)
committerDerrick Brashear <shadow@dementix.org>
Tue, 10 Apr 2012 11:27:45 +0000 (04:27 -0700)
Move the new background daemon code out from under the AFS_DARWIN80_ENV
ifdef into its own AFS_NEW_BKG define. This lets us use it for things
other than the Darwin mv helper, on other platforms.

Based on code originally written by Derrick Brashear

Change-Id: Iba9431f5dc4bbbe10222b25a595cdd1ea2f592f4
Reviewed-on: http://gerrit.openafs.org/7136
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

src/afs/afs_call.c
src/afs/afs_daemons.c
src/afs/afs_prototypes.h
src/afsd/afsd.c
src/config/param.ppc_darwin_90.h
src/config/param.x86_darwin_100.h
src/config/param.x86_darwin_110.h
src/config/param.x86_darwin_80.h
src/config/param.x86_darwin_90.h

index 63b5b0c..29daefa 100644 (file)
@@ -335,6 +335,9 @@ afsd_thread(void *rock)
        complete_and_exit(0, 0);
        break;
     case AFSOP_START_BKG:
+#ifdef AFS_NEW_BKG
+       afs_warn("Install matching afsd! Old background daemons not supported.\n");
+#else
        sprintf(current->comm, "afs_bkgstart");
        AFS_GLOCK();
        complete(arg->complete);
@@ -347,6 +350,7 @@ afsd_thread(void *rock)
        sprintf(current->comm, "afs_background");
        afs_BackgroundDaemon();
        AFS_GUNLOCK();
+#endif
        complete_and_exit(0, 0);
        break;
     case AFSOP_START_TRUNCDAEMON:
@@ -649,7 +653,7 @@ afs_syscall_call(long parm, long parm2, long parm3,
     put_vfs_context();
 #endif
 #ifdef AFS_DAEMONOP_ENV
-# if defined(AFS_DARWIN80_ENV)
+# if defined(AFS_NEW_BKG)
     if (parm == AFSOP_BKG_HANDLER) {
        /* if afs_uspc_param grows this should be checked */
        struct afs_uspc_param *mvParam = osi_AllocSmallSpace(AFS_SMALLOCSIZ);
@@ -692,7 +696,7 @@ afs_syscall_call(long parm, long parm2, long parm3,
        afs_osi_Free(param2, namebufsz);
        osi_FreeSmallSpace(mvParam);
     } else
-# endif /* DARWIN80 */
+# endif /* AFS_NEW_BKG */
     if (parm < AFSOP_ADDCELL || parm == AFSOP_RXEVENT_DAEMON
        || parm == AFSOP_RXLISTENER_DAEMON) {
        afs_DaemonOp(parm, parm2, parm3, parm4, parm5, parm6);
@@ -784,7 +788,7 @@ afs_syscall_call(long parm, long parm2, long parm3,
        AFS_GUNLOCK();
        exit(CLD_EXITED, 0);
 # endif /* AFS_SGI_ENV */
-# ifndef AFS_DARWIN80_ENV
+# ifndef AFS_NEW_BKG
     } else if (parm == AFSOP_START_BKG) {
        while (afs_initState < AFSOP_START_BKG)
            afs_osi_Sleep(&afs_initState);
@@ -805,7 +809,7 @@ afs_syscall_call(long parm, long parm2, long parm3,
        AFS_GUNLOCK();
        exit(CLD_EXITED, 0);
 #  endif /* AFS_SGI_ENV */
-# endif /* ! AFS_DARWIN80_ENV */
+# endif /* ! AFS_NEW_BKG */
     } else if (parm == AFSOP_START_TRUNCDAEMON) {
        while (afs_initState < AFSOP_GO)
            afs_osi_Sleep(&afs_initState);
index a1bd5f0..a4c9c88 100644 (file)
@@ -994,7 +994,7 @@ brequest_release(struct brequest *tb)
     afs_BRelease(tb);  /* this grabs and releases afs_xbrs lock */
 }
 
-#ifdef AFS_DARWIN80_ENV
+#ifdef AFS_NEW_BKG
 int
 afs_BackgroundDaemon(struct afs_uspc_param *uspc, void *param1, void *param2)
 #else
@@ -1011,7 +1011,7 @@ afs_BackgroundDaemon(void)
        /* Irix with "short stack" exits */
        afs_BackgroundDaemon_once();
 
-#ifdef AFS_DARWIN80_ENV
+#ifdef AFS_NEW_BKG
     /* If it's a re-entering syscall, complete the request and release */
     if (uspc->ts > -1) {
         tb = afs_brs;
@@ -1035,7 +1035,7 @@ afs_BackgroundDaemon(void)
 #endif
         /* Otherwise it's a new one */
        afs_nbrs++;
-#ifdef AFS_DARWIN80_ENV
+#ifdef AFS_NEW_BKG
     }
 #endif
 
@@ -1049,7 +1049,7 @@ afs_BackgroundDaemon(void)
                afs_termState = AFSOP_STOP_TRUNCDAEMON;
            ReleaseWriteLock(&afs_xbrs);
            afs_osi_Wakeup(&afs_termState);
-#ifdef AFS_DARWIN80_ENV
+#ifdef AFS_NEW_BKG
            return -2;
 #else
            return;
@@ -1113,7 +1113,7 @@ afs_BackgroundDaemon(void)
            afs_brsDaemons--;
        }
     }
-#ifdef AFS_DARWIN80_ENV
+#ifdef AFS_NEW_BKG
     return -2;
 #endif
 }
index d56b020..aaa4eb9 100644 (file)
@@ -221,7 +221,7 @@ extern int afs_CheckRootVolume(void);
 extern void afs_BRelease(struct brequest *ab);
 extern int afs_BBusy(void);
 extern int afs_BioDaemon(afs_int32 nbiods);
-#ifdef AFS_DARWIN80_ENV
+#ifdef AFS_NEW_BKG
 extern int afs_BackgroundDaemon(struct afs_uspc_param *uspc, void *param1, void *param2);
 #else
 extern void afs_BackgroundDaemon(void);
index 4c96d9c..a668072 100644 (file)
@@ -1497,7 +1497,7 @@ AfsdbLookupHandler(void)
 #endif
 }
 
-#ifdef AFS_DARWIN_ENV
+#ifdef AFS_NEW_BKG
 static void
 BkgHandler(void)
 {
@@ -1628,7 +1628,7 @@ afsdb_thread(void *rock)
 static void *
 daemon_thread(void *rock)
 {
-#ifdef AFS_DARWIN80_ENV
+#ifdef AFS_NEW_BKG
     /* Since the background daemon runs as a user process,
      * need to drop the controlling TTY, etc.
      */
index e5429a6..01e3ad1 100644 (file)
@@ -29,6 +29,7 @@
 #define DARWIN_REFBASE 3
 #define AFS_WARNUSER_MARINER_ENV 1
 #define AFS_CACHE_VNODE_PATH
+#define AFS_NEW_BKG 1
 
 /* File system entry (used if mount.h doesn't define MOUNT_AFS */
 #define AFS_MOUNT_AFS    "afs"
index 6167cf2..9d8de10 100644 (file)
@@ -33,6 +33,7 @@
 #define DARWIN_REFBASE 3
 #define AFS_WARNUSER_MARINER_ENV 1
 #define AFS_CACHE_VNODE_PATH
+#define AFS_NEW_BKG 1
 #define NEED_IOCTL32
 
 /* File system entry (used if mount.h doesn't define MOUNT_AFS */
index 440b370..eae5983 100644 (file)
@@ -34,6 +34,7 @@
 #define DARWIN_REFBASE 3
 #define AFS_WARNUSER_MARINER_ENV 1
 #define AFS_CACHE_VNODE_PATH
+#define AFS_NEW_BKG 1
 #define NEED_IOCTL32
 
 /* File system entry (used if mount.h doesn't define MOUNT_AFS */
index 29751d3..2a079a7 100644 (file)
 #define AFS_SYSCALL             230
 #define AFS_WARNUSER_MARINER_ENV 1
 #define DARWIN_REFBASE 0
+#define AFS_NEW_BKG 1
 
 /* File system entry (used if mount.h doesn't define MOUNT_AFS */
 #define AFS_MOUNT_AFS    "afs"
index f1e02a6..6814c28 100644 (file)
@@ -29,6 +29,7 @@
 #define DARWIN_REFBASE 3
 #define AFS_WARNUSER_MARINER_ENV 1
 #define AFS_CACHE_VNODE_PATH
+#define AFS_NEW_BKG 1
 
 /* File system entry (used if mount.h doesn't define MOUNT_AFS */
 #define AFS_MOUNT_AFS    "afs"