[PATCH v6 1/3] erofs-utils: add xxh32 library
Jingbo Xu
jefflexu at linux.alibaba.com
Wed Aug 30 00:14:44 AEST 2023
On 8/29/23 8:44 PM, Gao Xiang wrote:
>
>
> On 2023/8/29 20:41, Jingbo Xu wrote:
>> Add xxh32 library which could be used by following xattr bloom filter
>> feature.
>>
>> Signed-off-by: Jingbo Xu <jefflexu at linux.alibaba.com>
>> ---
>> include/erofs/xxhash.h | 72 ++++++++++++++++++++++++
>> lib/Makefile.am | 3 +-
>> lib/xxhash.c | 125 +++++++++++++++++++++++++++++++++++++++++
>> 3 files changed, 199 insertions(+), 1 deletion(-)
>> create mode 100644 include/erofs/xxhash.h
>> create mode 100644 lib/xxhash.c
>>
>> diff --git a/include/erofs/xxhash.h b/include/erofs/xxhash.h
>> new file mode 100644
>> index 0000000..5459bd8
>> --- /dev/null
>> +++ b/include/erofs/xxhash.h
>> @@ -0,0 +1,72 @@
>> +// SPDX-License-Identifier: BSD-2-Clause OR GPL-2.0-only
>
> You should use:
> /* SPDX-License-Identifier: BSD-2-Clause OR GPL-2.0-only */
>
> for each header, but I guess we could drop the copyright
> below since it's just a declaration?
Okay.
>
>> +/*
>> + * The xxhash is copied from the linux kernel at:
>> + *
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/lib/xxhash.c
>> + *
>> + * The original copyright is:
>> + *
>> + * xxHash - Extremely Fast Hash algorithm
>> + * Copyright (C) 2012-2016, Yann Collet.
>> + *
>> + * BSD 2-Clause License
>> (http://www.opensource.org/licenses/bsd-license.php)
>> + *
>> + * Redistribution and use in source and binary forms, with or without
>> + * modification, are permitted provided that the following conditions
>> are
>> + * met:
>> + *
>> + * * Redistributions of source code must retain the above copyright
>> + * notice, this list of conditions and the following disclaimer.
>> + * * Redistributions in binary form must reproduce the above
>> + * copyright notice, this list of conditions and the following
>> disclaimer
>> + * in the documentation and/or other materials provided with the
>> + * distribution.
>> + *
>> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
>> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
>> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
>> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
>> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
>> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
>> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
>> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>> + *
>> + * This program is free software; you can redistribute it and/or
>> modify it under
>> + * the terms of the GNU General Public License version 2 as published
>> by the
>> + * Free Software Foundation. This program is dual-licensed; you may
>> select
>> + * either version 2 of the GNU General Public License ("GPL") or BSD
>> license
>> + * ("BSD").
>> + *
>> + * You can contact the author at:
>> + * - xxHash homepage: https://cyan4973.github.io/xxHash/
>> + * - xxHash source repository: https://github.com/Cyan4973/xxHash
>> + */
>> +
>> +#ifndef __EROFS_XXHASH_H
>> +#define __EROFS_XXHASH_H
>> +
>> +#ifdef __cplusplus
>> +extern "C"
>> +{
>> +#endif
>> +
>> +#include "defs.h"
>
> #include <stdint.h> ?
Alright.
>
>> +
>> +/**
>> + * xxh32() - calculate the 32-bit hash of the input with a given seed.
>> + *
>> + * @input: The data to hash.
>> + * @length: The length of the data to hash.
>> + * @seed: The seed can be used to alter the result predictably.
>> + *
>> + * Return: The 32-bit hash of the data.
>> + */
>> +uint32_t xxh32(const void *input, size_t length, uint32_t seed);
>> +
>> +#ifdef __cplusplus
>> +}
>> +#endif
>> +
>> +#endif
>> diff --git a/lib/Makefile.am b/lib/Makefile.am
>> index 7a5dc03..3e09516 100644
>> --- a/lib/Makefile.am
>> +++ b/lib/Makefile.am
>> @@ -24,6 +24,7 @@ noinst_HEADERS = $(top_srcdir)/include/erofs_fs.h \
>> $(top_srcdir)/include/erofs/xattr.h \
>> $(top_srcdir)/include/erofs/compress_hints.h \
>> $(top_srcdir)/include/erofs/fragments.h \
>> + $(top_srcdir)/include/erofs/xxhash.h \
>> $(top_srcdir)/lib/liberofs_private.h
>> noinst_HEADERS += compressor.h
>> @@ -31,7 +32,7 @@ liberofs_la_SOURCES = config.c io.c cache.c super.c
>> inode.c xattr.c exclude.c \
>> namei.c data.c compress.c compressor.c zmap.c
>> decompress.c \
>> compress_hints.c hashmap.c sha256.c blobchunk.c dir.c \
>> fragments.c rb_tree.c dedupe.c uuid_unparse.c uuid.c
>> tar.c \
>> - block_list.c
>> + block_list.c xxhash.c
>> liberofs_la_CFLAGS = -Wall ${libuuid_CFLAGS} -I$(top_srcdir)/include
>> if ENABLE_LZ4
>> diff --git a/lib/xxhash.c b/lib/xxhash.c
>> new file mode 100644
>> index 0000000..3d77fe3
>> --- /dev/null
>> +++ b/lib/xxhash.c
>> @@ -0,0 +1,125 @@
>> +// SPDX-License-Identifier: BSD-2-Clause OR GPL-2.0-only
>> +/*
>> + * The xxhash is copied from the linux kernel at:
>> + *
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/lib/xxhash.c
>> + *
>> + * The original copyright is:
>> + *
>> + * xxHash - Extremely Fast Hash algorithm
>> + * Copyright (C) 2012-2016, Yann Collet.
>> + *
>> + * BSD 2-Clause License
>> (http://www.opensource.org/licenses/bsd-license.php)
>> + *
>> + * Redistribution and use in source and binary forms, with or without
>> + * modification, are permitted provided that the following conditions
>> are
>> + * met:
>> + *
>> + * * Redistributions of source code must retain the above copyright
>> + * notice, this list of conditions and the following disclaimer.
>> + * * Redistributions in binary form must reproduce the above
>> + * copyright notice, this list of conditions and the following
>> disclaimer
>> + * in the documentation and/or other materials provided with the
>> + * distribution.
>> + *
>> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
>> + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
>> + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
>> + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>> + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>> + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
>> + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
>> + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
>> + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
>> + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>> + *
>> + * This program is free software; you can redistribute it and/or
>> modify it under
>> + * the terms of the GNU General Public License version 2 as published
>> by the
>> + * Free Software Foundation. This program is dual-licensed; you may
>> select
>> + * either version 2 of the GNU General Public License ("GPL") or BSD
>> license
>> + * ("BSD").
>> + *
>> + * You can contact the author at:
>> + * - xxHash homepage: https://cyan4973.github.io/xxHash/
>> + * - xxHash source repository: https://github.com/Cyan4973/xxHash
>> + */
>>
>
> #include "erofs/defs.h"
Alright.
>
>> +#include "erofs/xxhash.h"
>> +
>
> Thanks,
> Gao Xiang
--
Thanks,
Jingbo
More information about the Linux-erofs
mailing list