Develop tests for issues #5866 and #8858

Provide zfstest coverage for these two issues which
were a panic accessing extended attributes and
a problem comparing 64 bit and 32 bit generation
numbers.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Paul Zuchowski <pzuchowski@datto.com>
Issue #5866
Issue #8858 
Closes #8978
This commit is contained in:
Paul Zuchowski
2019-07-26 20:52:13 -04:00
committed by Brian Behlendorf
parent 9fb6abe5ad
commit 693c1fc478
11 changed files with 158 additions and 2 deletions
+1
View File
@@ -19,6 +19,7 @@ SUBDIRS = \
mmap_libaio \
mmapwrite \
nvlist_to_lua \
online_recv \
randfree_file \
randwritecomp \
readmmap \
@@ -0,0 +1 @@
/online_recv
@@ -0,0 +1,15 @@
include $(top_srcdir)/config/Rules.am
pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin
DEFAULT_INCLUDES += \
-I$(top_srcdir)/include \
-I$(top_srcdir)/lib/libspl/include
pkgexec_PROGRAMS = online_recv
online_recv_SOURCES = online_recv.c
online_recv_LDADD = \
$(top_builddir)/lib/libspl/libspl.la \
$(top_builddir)/lib/libnvpair/libnvpair.la \
$(top_builddir)/lib/libzfs_core/libzfs_core.la
@@ -0,0 +1,52 @@
/*
* CDDL HEADER START
*
* This file and its contents are supplied under the terms of the
* Common Development and Distribution License ("CDDL"), version 1.0.
* You may only use this file in accordance with the terms of version
* 1.0 of the CDDL.
*
* A full copy of the text of the CDDL should have accompanied this
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2019 by Datto, Inc. All rights reserved.
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <libzfs_core.h>
int zfs_fd;
/*
* Use libzfs_core to do a "zfs receive". This allows us to
* bypass certain checks in the zfs command utility and
* perform an online receive into an existing filesystem for
* testing purposes.
*/
int
main(int argc, const char *argv[])
{
int err = 0;
if (argc < 2) {
fprintf(stderr, "usage: online_recv <destination>\n");
exit(2);
}
(void) libzfs_core_init();
err = lzc_receive(argv[1], NULL, NULL, B_TRUE, B_FALSE, 0);
libzfs_core_fini();
return (err);
}