From 7ac0dfce59b2cc7c6999474d2f9b3a78b63e6d20 Mon Sep 17 00:00:00 2001 From: ericm Date: Fri, 7 Mar 2008 06:02:01 +0000 Subject: [PATCH] branch: HEAD fix build failure when zlib is absent. --- lustre/ptlrpc/sec_bulk.c | 35 ++++++++++++++++++++++++++--------- lustre/ptlrpc/sec_config.c | 10 ++++++++-- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/lustre/ptlrpc/sec_bulk.c b/lustre/ptlrpc/sec_bulk.c index c7f41f7..f09663e 100644 --- a/lustre/ptlrpc/sec_bulk.c +++ b/lustre/ptlrpc/sec_bulk.c @@ -29,10 +29,8 @@ #ifndef __KERNEL__ #include #include -#include #else #include -#include #endif #include @@ -854,6 +852,7 @@ EXPORT_SYMBOL(bulk_sec_desc_unpack); #ifdef __KERNEL__ +#ifdef HAVE_ADLER static int do_bulk_checksum_adler32(struct ptlrpc_bulk_desc *desc, void *buf) { struct page *page; @@ -877,6 +876,7 @@ static int do_bulk_checksum_adler32(struct ptlrpc_bulk_desc *desc, void *buf) memcpy(buf, &adler32, sizeof(adler32)); return 0; } +#endif static int do_bulk_checksum_crc32(struct ptlrpc_bulk_desc *desc, void *buf) { @@ -911,10 +911,17 @@ static int do_bulk_checksum(struct ptlrpc_bulk_desc *desc, __u32 alg, void *buf) LASSERT(alg > BULK_HASH_ALG_NULL && alg < BULK_HASH_ALG_MAX); - if (alg == BULK_HASH_ALG_ADLER32) + switch (alg) { + case BULK_HASH_ALG_ADLER32: +#ifdef HAVE_ADLER return do_bulk_checksum_adler32(desc, buf); - if (alg == BULK_HASH_ALG_CRC32) +#else + CERROR("Adler32 not supported\n"); + return -EINVAL; +#endif + case BULK_HASH_ALG_CRC32: return do_bulk_checksum_crc32(desc, buf); + } tfm = crypto_alloc_tfm(hash_types[alg].sht_tfm_name, 0); if (tfm == NULL) { @@ -949,7 +956,7 @@ out_tfm: static int do_bulk_checksum(struct ptlrpc_bulk_desc *desc, __u32 alg, void *buf) { - __u32 csum32 = ~0; + __u32 csum32; int i; LASSERT(alg == BULK_HASH_ALG_ADLER32 || alg == BULK_HASH_ALG_CRC32); @@ -963,17 +970,27 @@ static int do_bulk_checksum(struct ptlrpc_bulk_desc *desc, __u32 alg, void *buf) char *ptr = desc->bd_iov[i].iov_base; int len = desc->bd_iov[i].iov_len; - if (alg == BULK_HASH_ALG_ADLER32) + switch (alg) { + case BULK_HASH_ALG_ADLER32: +#ifdef HAVE_ADLER csum32 = zlib_adler32(csum32, ptr, len); - else +#else + CERROR("Adler32 not supported\n"); + return -EINVAL; +#endif + break; + case BULK_HASH_ALG_CRC32: csum32 = crc32_le(csum32, ptr, len); + break; + } } - *((__u32 *) buf) = csum32; + csum32 = cpu_to_le32(csum32); + memcpy(buf, &csum32, sizeof(csum32)); return 0; } -#endif +#endif /* __KERNEL__ */ /* * perform algorithm @alg checksum on @desc, store result in @buf. diff --git a/lustre/ptlrpc/sec_config.c b/lustre/ptlrpc/sec_config.c index 97aaa2a..ed70aba 100644 --- a/lustre/ptlrpc/sec_config.c +++ b/lustre/ptlrpc/sec_config.c @@ -82,6 +82,12 @@ EXPORT_SYMBOL(sptlrpc_target_sec_part); * user supplied flavor string parsing * ****************************************/ +#ifdef HAVE_ADLER +#define BULK_HASH_ALG_DEFAULT BULK_HASH_ALG_ADLER32 +#else +#define BULK_HASH_ALG_DEFAULT BULK_HASH_ALG_CRC32 +#endif + typedef enum { BULK_TYPE_N = 0, BULK_TYPE_I = 1, @@ -108,7 +114,7 @@ static void get_flavor_by_rpc(struct sptlrpc_rule *rule, __u16 rpc_flavor) case SPTLRPC_FLVR_PLAIN: case SPTLRPC_FLVR_KRB5N: case SPTLRPC_FLVR_KRB5A: - rule->sr_flvr.sf_bulk_hash = BULK_HASH_ALG_ADLER32; + rule->sr_flvr.sf_bulk_hash = BULK_HASH_ALG_DEFAULT; break; case SPTLRPC_FLVR_KRB5P: rule->sr_flvr.sf_bulk_ciph = BULK_CIPH_ALG_AES128; @@ -134,7 +140,7 @@ static void get_flavor_by_bulk(struct sptlrpc_rule *rule, case SPTLRPC_FLVR_PLAIN: case SPTLRPC_FLVR_KRB5N: case SPTLRPC_FLVR_KRB5A: - rule->sr_flvr.sf_bulk_hash = BULK_HASH_ALG_ADLER32; + rule->sr_flvr.sf_bulk_hash = BULK_HASH_ALG_DEFAULT; break; case SPTLRPC_FLVR_KRB5I: case SPTLRPC_FLVR_KRB5P: -- 1.8.3.1