#define AFS_NRXPACKETS 80
#define AFS_RXDEADTIME 50
#define AFS_HARDDEADTIME 120
-#define AFS_IDLEDEADTIME 50
+#define AFS_IDLEDEADTIME 1200
+#define AFS_IDLEDEADTIME_REP 180 /* more than fs's cb dead time */
#define AFS_BLKBITS 12
#define AFS_BLKSIZE (1 << AFS_BLKBITS)
extern afs_int32 afs_rx_deadtime;
extern afs_int32 afs_rx_harddead;
extern afs_int32 afs_rx_idledead;
+extern afs_int32 afs_rx_idledead_rep;
struct sysname_info {
char *name;
#ifdef AFS_DARWIN_ENV
#define BOP_MOVE 5 /* ptr1 afs_uspc_param ptr2 sname ptr3 dname */
#endif
+#define BOP_PARTIAL_STORE 6 /* parm1 is chunk to store */
#define B_DONTWAIT 1 /* On failure return; don't wait */
afs_ucred_t *cred; /* credentials to use for operation */
afs_size_t size_parm[BPARMS]; /* random parameters */
void *ptr_parm[BPARMS]; /* pointer parameters */
- afs_int32 code; /* return code */
+ afs_int32 code_raw; /* return code from AFS routines */
+ afs_int32 code_checkcode; /* the afs_CheckCode-translated code */
short refCount; /* use counter for this structure */
char opcode; /* what to do (store, fetch, etc) */
char flags; /* free, etc */
char tokenError; /* a token error other than expired. */
char idleError; /* the server idled too long */
char skipserver[AFS_MAXHOSTS];
+ afs_int32 lasterror[AFS_MAXHOSTS];
};
#define VOLMISSING 1
#define VOLBUSY 2
struct sa_conn_vector;
typedef struct sa_conn_vector * p_sa_conn_vector; /* forward decl */
+#define CONN_REPLICATED 0x1
+
struct afs_conn {
int refCount;
int activated;
struct srvAddr *srvr; /* server associated with this conn */
short refCount; /* reference count for allocation */
unsigned short port; /* port associated with this connection */
+ int flags;
/* next connection to return when all in cvec are fully utilized */
int select_index;
struct srvAddr *next_sa; /* another interface on same host */
struct server *server; /* back to parent */
struct sa_conn_vector *conns; /* All user connections to this server */
+ struct afs_conn *natping;
afs_int32 sa_ip; /* Host addr in network byte order */
u_short sa_iprank; /* indiv ip address priority */
u_short sa_portal; /* port addr in network byte order */
#endif
#define CCreating 0x00400000 /* avoid needless store after open truncate */
#define CPageHog 0x00800000 /* AIX - dumping large cores is a page hog. */
+#define CCorrupt 0x01000000 /* corrupt dir already reported */
#define CDCLock 0x02000000 /* Vnode lock held over call to GetDownD */
#define CBulkFetching 0x04000000 /* stats are being fetched by bulk stat */
#define CExtendedFile 0x08000000 /* extended file via ftruncate call. */
#else
#define VREFCOUNT(v) ((v)->vrefCount)
#define VREFCOUNT_GT(v,y) ((v)->vrefCount > (y))
-#define VREFCOUNT_SET(v, c) (v)->vrefCount = c;
-#define VREFCOUNT_DEC(v) (v)->vrefCount--;
-#define VREFCOUNT_INC(v) (v)->vrefCount++;
+#define VREFCOUNT_SET(v, c) (v)->vrefCount = c
+#define VREFCOUNT_DEC(v) (v)->vrefCount--
+#define VREFCOUNT_INC(v) (v)->vrefCount++
#define d_unhash(d) list_empty(&(d)->d_hash)
#define dget_locked(d) dget(d)
#endif
#if defined(AFS_LINUX26_ENV)
cred_t *cred; /* last writer's cred */
#endif
+#ifdef AFS_LINUX24_ENV
+ struct dentry *target_link; /* dentry we prefer, when we are redirecting
+ * all requests due to duplicate dentry aliases.
+ * See LINUX/osi_vnodeops.c. Note that this is
+ * NOT an actual reference to a dentry, so this
+ * pointer MUST NOT be dereferenced on its own. */
+#endif
afs_int32 vc_error; /* stash write error for this vnode. */
int xlatordv; /* Used by nfs xlator */
afs_ucred_t *uncred;
(((rw) == UIO_WRITE) ? afs_write(avc, uio, io, cred, 1) : afs_read(avc, uio, cred, 1))
/* Cache size truncation uses the following low and high water marks:
- * If the cache is more than 95% full (CM_DCACHECOUNTFREEPCT), the cache
- * truncation daemon is awakened and will free up space until the cache is 85%
- * (CM_DCACHESPACEFREEPCT - CM_DCACHEEXTRAPCT) full.
+ * If the cache is more than 90% full by space (CM_DCACHESPACEFREEPCT) or
+ * 95% full by # of chunks (CM_DCACHECOUNTFREEPCT), the cache truncation
+ * daemon is awakened and will start freeing space. The cache truncation
+ * daemon will continue to free space until the cache is at most 85% full
+ * by space (CM_DCACHESPACEFREEPCT - CM_DCACHEEXTRAPCT). The cache truncation
+ * daemon will also try to free space until the cache is at most 90% full by
+ * chunks (CM_DCACHECOUNTFREEPCT - CM_DCACHEEXTRAPCT), but the 85% space limit
+ * is the only limit that we must hit.
* afs_UFSWrite and afs_GetDCache (when it needs to fetch data) will wait on
* afs_WaitForCacheDrain if the cache is 98% (CM_WAITFORDRAINPCT) full.
* afs_GetDownD wakes those processes once the cache is 95% full
#define afs_CacheIsTooFull() \
(afs_blocksUsed - afs_blocksDiscarded > \
- PERCENT(CM_DCACHECOUNTFREEPCT, afs_cacheBlocks) || \
+ PERCENT(CM_DCACHESPACEFREEPCT, afs_cacheBlocks) || \
afs_freeDCCount - afs_discardDCCount < \
PERCENT(100 - CM_DCACHECOUNTFREEPCT, afs_cacheFiles))
};
extern int afs_fakestat_enable;
-
-#ifdef AFS_MAXVCOUNT_ENV
+extern int afs_rmtsys_enable;
extern int afsd_dynamic_vcaches;
-#else
-#define afsd_dynamic_vcaches 0
-#endif
/*
* Wrappers for access to credentials structure members