afs: add afsd -inumcalc option
[openafs.git] / src / config / afs_args.h
index e599bda..959d91b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
- * 
+ *
  * This software has been released under the terms of the IBM Public
  * License.  For details, see the LICENSE file in the top-level source
  * directory or online at http://www.openafs.org/dl/license10.html
 #define AFSOP_SET_BACKUPTREE    37     /* enable backup tree support */
 #define AFSOP_SET_RXPCK                 38     /* set rx_extraPackets*/
 #define AFSOP_BUCKETPCT          39     /* bucket percentage */
-#define AFSOP_SET_RXMAXMTU       40     /* set rx_MyMaxSendSize,rx_maxReceiveSizeUser,rx_maxReceiveSize */  
+#define AFSOP_SET_RXMAXMTU       40     /* set rx_MyMaxSendSize,rx_maxReceiveSizeUser,rx_maxReceiveSize */
+#define AFSOP_BKG_HANDLER        41     /* userspace-capable Bkg daemon */
+#define AFSOP_SET_RXMAXFRAGS     43     /* set rxi_nSendFrags, rxi_nRecvFrags */
+#define AFSOP_SET_RMTSYS_FLAG    44     /* set flag if rmtsys is enabled */
+#define AFSOP_SEED_ENTROPY       45     /* Give the kernel hcrypto entropy */
+#define AFSOP_SET_INUMCALC       46     /* set inode number calculation method */
 
 /* The range 20-30 is reserved for AFS system offsets in the afs_syscall */
 #define        AFSCALL_PIOCTL          20
 #define AFSCALL_INIT_KERNEL_CONFIG 47  /* set vnode glue ops. */
 #endif
 
-#ifdef AFS_SGI53_ENV
-#define AFSOP_NFSSTATICADDR     32     /* to contents addr of nfs kernel addr */
-#define AFSOP_NFSSTATICADDRPTR  33     /* pass addr of variable containing 
-                                        * address into kernel. */
-#define AFSOP_NFSSTATICADDR2    34     /* pass address in as hyper. */
-#define AFSOP_SBLOCKSTATICADDR2  35    /* for sblock and sbunlock */
-#endif
 #define        AFSOP_GETMASK            42     /* stand-in for SIOCGIFNETMASK */
 /* For SGI, this can't interfere with any of the 64 bit inode calls. */
 #define AFSOP_RXLISTENER_DAEMON  48    /* starts kernel RX listener */
 #define AFSOP_CACHEDIRS          51     /* number of files per dir */
 #define AFSOP_CACHEFILES         52     /* number of files */
 
-#define AFSOP_SETINT             60     /* we should just set key/value pairs 
+#define AFSOP_SETINT             60     /* we should just set key/value pairs
                                           for things which are just ints */
 
 /* these are for initialization flags */
 
 #define AFSCALL_INIT_MEMCACHE 0x1
-#define AFSCALL_INIT_MEMCACHE_SLEEP 0x2        /* Use osi_Alloc to allocate memcache
-                                        * instead of osi_Alloc_NoSleep */
 
 /* flags for rxstats pioctl */
 
 #endif
 
 /* arguments passed by afsd */
+#define IDTYPE_UID 0
+
+/* We don't necessarily have VenusFid here */
+struct afs_umv_param {
+    afs_int32 id;
+    afs_int32 idtype;
+    afs_int32 sCell;
+    afs_int32 sVolume;
+    afs_int32 sVnode;
+    afs_int32 sUnique;
+    afs_int32 dCell;
+    afs_int32 dVolume;
+    afs_int32 dVnode;
+    afs_int32 dUnique;
+};
+
+#define AFS_USPC_UMV 1
+
+struct afs_uspc_param {
+    afs_int32 retval;
+    afs_int32 ts; /* brequest ts - always unique */
+    afs_int32 bufSz;
+    afs_int32 reqtype;
+    union {
+       struct afs_umv_param umv;
+    } req;
+};
+
 struct afs_cacheParams {
     afs_int32 cacheScaches;
     afs_int32 cacheFiles;
@@ -146,6 +170,13 @@ struct afs_cacheParams {
     afs_int32 dynamic_vcaches;
 };
 
+/* Supported values for AFSOP_SET_INUMCALC. */
+enum {
+    AFS_INUMCALC_COMPAT = 0,
+    AFS_INUMCALC_MD5 = 1
+};
+
+
 /*
  * Note that the AFS_*ALLOCSIZ values should be multiples of sizeof(void*) to
  * accomodate pointer alignment.
@@ -153,12 +184,11 @@ struct afs_cacheParams {
 /* Used in rx.c as well as afs directory. */
 #if    defined(AFS_AIX32_ENV) || defined(AFS_HPUX_ENV)
 /* XXX Because of rxkad_cprivate... XXX */
-#define        AFS_MDALLOCSIZ  (127*sizeof(void *))    /* "Medium" allocated size */
-#define        AFS_MALLOC_LOW_WATER    50      /* Min free blocks before allocating more */
 #define        AFS_SMALLOCSIZ  (38*sizeof(void *))     /* "Small" allocated size */
 #else
 #define        AFS_SMALLOCSIZ  (64*sizeof(void *))     /*  "Small" allocated size */
 #endif
+#define AFS_LRALLOCSIZ  4096    /* "Large" allocated size */
 
 /* Cache configuration available through the client callback interface */
 typedef struct cm_initparams_v1 {
@@ -188,7 +218,7 @@ typedef struct cm_initparams_v1 {
 /* Defines and structures for the AFS proc replacement layer for the original syscall (AFS_SYSCALL) strategy */
 
 #ifdef AFS_LINUX20_ENV
+
 #define PROC_FSDIRNAME "openafs"
 #define PROC_SYSCALL_NAME "afs_ioctl"
 #define PROC_SYSCALL_FNAME "/proc/fs/openafs/afs_ioctl"
@@ -200,10 +230,10 @@ typedef struct cm_initparams_v1 {
 #define PROC_RX_NAME "rx"
 #define PROC_SERVICES_NAME "rx_services"
 #define PROC_RXSTATS_NAME "rx_stats"
-#define VIOC_SYSCALL_TYPE 'C' 
+#define VIOC_SYSCALL_TYPE 'C'
 #define VIOC_SYSCALL _IOW(VIOC_SYSCALL_TYPE,1,void *)
 #define VIOC_SYSCALL32 _IOW(VIOC_SYSCALL_TYPE,1,int)
+
 struct afsprocdata {
   long param4;
   long param3;
@@ -219,25 +249,65 @@ struct afsprocdata32 {
   unsigned int param1;
   unsigned int syscall;
 };
+
 #endif
 
 #ifdef AFS_DARWIN80_ENV
 struct afssysargs {
-     unsigned long syscall;
-     unsigned long param1;
-     unsigned long param2;
-     unsigned long param3;
-     unsigned long param4;
-     unsigned long param5;
-     unsigned long param6;
-     unsigned long retval;
+    unsigned int syscall;
+    unsigned int param1;
+    unsigned int param2;
+    unsigned int param3;
+    unsigned int param4;
+    unsigned int param5;
+    unsigned int param6;
+    unsigned int retval;
 };
-#define VIOC_SYSCALL_TYPE 'C' 
+
+/* args reordered to avoid alignment issues */
+struct afssysargs64 {
+    user_addr_t param1;
+    user_addr_t param2;
+    user_addr_t param3;
+    user_addr_t param4;
+    user_addr_t param5;
+    user_addr_t param6;
+    unsigned int syscall;
+    unsigned int retval;
+};
+#define VIOC_SYSCALL_TYPE 'C'
 #define VIOC_SYSCALL _IOWR(VIOC_SYSCALL_TYPE,1,struct afssysargs)
+#define VIOC_SYSCALL64 _IOWR(VIOC_SYSCALL_TYPE,2,struct afssysargs64)
 #define SYSCALL_DEV_FNAME "/dev/openafs_ioctl"
 #endif
 
+#ifdef AFS_SUN511_ENV
+# define VIOC_SYSCALL_TYPE 'C'
+# define VIOC_SYSCALL _IOW(VIOC_SYSCALL_TYPE, 1, struct afssysargs)
+# define VIOC_SYSCALL32 _IOW(VIOC_SYSCALL_TYPE, 2, struct afssysargs32)
+# define SYSCALL_DEV_FNAME "/dev/afs"
+
+struct afssysargs {
+    afs_uint64 param6;
+    afs_uint64 param5;
+    afs_uint64 param4;
+    afs_uint64 param3;
+    afs_uint64 param2;
+    afs_uint64 param1;
+    afs_uint32 syscall;
+};
+
+struct afssysargs32 {
+    afs_uint32 param6;
+    afs_uint32 param5;
+    afs_uint32 param4;
+    afs_uint32 param3;
+    afs_uint32 param2;
+    afs_uint32 param1;
+    afs_uint32 syscall;
+};
+#endif /* AFS_SUN511_ENV */
+
 #ifdef AFS_CACHE_VNODE_PATH
 #define AFS_CACHE_CELLS_INODE -2
 #define AFS_CACHE_ITEMS_INODE -3