# 2.6.32
+# 2.6.32 changes cache_detail's member cache_request to cache_upcall
+# in kernel commit bc74b4f5e63a09fb78e245794a0de1e5a2716bbe
+AC_DEFUN([LC_CACHE_UPCALL],
+[AC_MSG_CHECKING([if cache_detail has cache_upcall field])
+ LB_LINUX_TRY_COMPILE([
+ #include <linux/sunrpc/cache.h>
+ ],[
+ struct cache_detail cd;
+ cd.cache_upcall = NULL;
+ ],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_CACHE_UPCALL, 1,
+ [cache_detail has cache_upcall field])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
+
# 2.6.32 add a limits member in struct request_queue.
AC_DEFUN([LC_REQUEST_QUEUE_LIMITS],
[AC_MSG_CHECKING([if request_queue has a limits field])
LC_BLK_QUEUE_MAX_SECTORS
LC_BLK_QUEUE_MAX_SEGMENTS
LC_SET_CPUS_ALLOWED
+ LC_CACHE_UPCALL
# 2.6.35
LC_FILE_FSYNC
(*bpp)[-1] = '\n';
}
+#ifdef HAVE_CACHE_UPCALL
+static int rsi_upcall(struct cache_detail *cd, struct cache_head *h)
+{
+ return sunrpc_cache_pipe_upcall(cd, h, rsi_request);
+}
+#endif
+
static inline void __rsi_init(struct rsi *new, struct rsi *item)
{
new->out_handle = RAWOBJ_EMPTY;
.hash_table = rsi_table,
.name = "auth.sptlrpc.init",
.cache_put = rsi_put,
+#ifdef HAVE_CACHE_UPCALL
+ .cache_upcall = rsi_upcall,
+#else
.cache_request = rsi_request,
+#endif
.cache_parse = rsi_parse,
#ifdef HAVE_SUNRPC_CACHE_V2
.match = rsi_match,
{
char *p, *end;
static int constant_zero = 0;
- unsigned char fakeseed[16];
+ unsigned char fakeseed[16] = { 0 };
uint32_t word_send_seq;
gss_krb5_lucid_key_t enc_key;
int i;