Add fix-no-zmod branch

This commit is contained in:
Brian Behlendorf 2008-11-21 11:29:52 -08:00
parent 5b1a72b342
commit 4a0f5e9d5b
4 changed files with 32 additions and 33 deletions

1
.topdeps Normal file
View File

@ -0,0 +1 @@
master

11
.topmsg Normal file
View File

@ -0,0 +1,11 @@
From: Brian Behlendorf <behlendorf1@llnl.gov>
Subject: [PATCH] fix no zmod
Do not use zmod.h in userspace.
This has also been filed with the ZFS team. It makes the userspace
libzpool code use the zlib API, instead of the Solaris-only and
non-standard zmod.h. The zlib API is almost identical and is a de
facto standard, so this is a no-brainer.
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>

View File

@ -28,22 +28,35 @@
#include <sys/debug.h>
#include <sys/types.h>
#include <sys/zmod.h>
#ifdef _KERNEL
#include <sys/systm.h>
#else
#include <sys/zmod.h>
typedef size_t zlen_t;
#define compress_func z_compress_level
#define uncompress_func z_uncompress
#else /* _KERNEL */
#include <strings.h>
#include <zlib.h>
typedef uLongf zlen_t;
#define compress_func compress2
#define uncompress_func uncompress
#endif
size_t
gzip_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n)
{
size_t dstlen = d_len;
zlen_t dstlen = d_len;
ASSERT(d_len <= s_len);
if (z_compress_level(d_start, &dstlen, s_start, s_len, n) != Z_OK) {
if (compress_func(d_start, &dstlen, s_start, s_len, n) != Z_OK) {
if (d_len != s_len)
return (s_len);
@ -51,18 +64,18 @@ gzip_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n)
return (s_len);
}
return (dstlen);
return ((size_t) dstlen);
}
/*ARGSUSED*/
int
gzip_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n)
{
size_t dstlen = d_len;
zlen_t dstlen = d_len;
ASSERT(d_len >= s_len);
if (z_uncompress(d_start, &dstlen, s_start, s_len) != Z_OK)
if (uncompress_func(d_start, &dstlen, s_start, s_len) != Z_OK)
return (-1);
return (0);

View File

@ -36,7 +36,6 @@
#include <sys/stat.h>
#include <sys/processor.h>
#include <sys/zfs_context.h>
#include <sys/zmod.h>
#include <sys/utsname.h>
/*
@ -801,31 +800,6 @@ kernel_fini(void)
urandom_fd = -1;
}
int
z_uncompress(void *dst, size_t *dstlen, const void *src, size_t srclen)
{
int ret;
uLongf len = *dstlen;
if ((ret = uncompress(dst, &len, src, srclen)) == Z_OK)
*dstlen = (size_t)len;
return (ret);
}
int
z_compress_level(void *dst, size_t *dstlen, const void *src, size_t srclen,
int level)
{
int ret;
uLongf len = *dstlen;
if ((ret = compress2(dst, &len, src, srclen, level)) == Z_OK)
*dstlen = (size_t)len;
return (ret);
}
/*ARGSUSED*/
size_t u8_textprep_str(char *i, size_t *il, char *o, size_t *ol, int nf,
size_t vers, int *err)