Merge branch 'linux-user-disk' into refs/top-bases/linux-zfs-branch
This commit is contained in:
commit
9193fdea7e
|
@ -55,7 +55,6 @@
|
||||||
#include <sys/arc.h>
|
#include <sys/arc.h>
|
||||||
#include <sys/ddt.h>
|
#include <sys/ddt.h>
|
||||||
#undef ZFS_MAXNAMELEN
|
#undef ZFS_MAXNAMELEN
|
||||||
#undef verify
|
|
||||||
#include <libzfs.h>
|
#include <libzfs.h>
|
||||||
|
|
||||||
#define ZDB_COMPRESS_NAME(idx) ((idx) < ZIO_COMPRESS_FUNCTIONS ? \
|
#define ZDB_COMPRESS_NAME(idx) ((idx) < ZIO_COMPRESS_FUNCTIONS ? \
|
||||||
|
|
|
@ -311,6 +311,7 @@ safe_malloc(size_t size)
|
||||||
return (data);
|
return (data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
static char *
|
static char *
|
||||||
safe_strdup(char *str)
|
safe_strdup(char *str)
|
||||||
{
|
{
|
||||||
|
@ -321,6 +322,7 @@ safe_strdup(char *str)
|
||||||
|
|
||||||
return (dupstr);
|
return (dupstr);
|
||||||
}
|
}
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Callback routine that will print out information for each of
|
* Callback routine that will print out information for each of
|
||||||
|
@ -488,6 +490,7 @@ parse_depth(char *opt, int *flags)
|
||||||
|
|
||||||
#define PROGRESS_DELAY 2 /* seconds */
|
#define PROGRESS_DELAY 2 /* seconds */
|
||||||
|
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
static char *pt_reverse = "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
|
static char *pt_reverse = "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
|
||||||
static time_t pt_begin;
|
static time_t pt_begin;
|
||||||
static char *pt_header = NULL;
|
static char *pt_header = NULL;
|
||||||
|
@ -539,6 +542,8 @@ finish_progress(char *done)
|
||||||
free(pt_header);
|
free(pt_header);
|
||||||
pt_header = NULL;
|
pt_header = NULL;
|
||||||
}
|
}
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* zfs clone [-p] [-o prop=value] ... <snap> <fs | vol>
|
* zfs clone [-p] [-o prop=value] ... <snap> <fs | vol>
|
||||||
*
|
*
|
||||||
|
|
|
@ -1598,7 +1598,7 @@ do_import(nvlist_t *config, const char *newname, const char *mntopts,
|
||||||
* -c Read pool information from a cachefile instead of searching
|
* -c Read pool information from a cachefile instead of searching
|
||||||
* devices.
|
* devices.
|
||||||
*
|
*
|
||||||
* -d Scan in a specific directory, other than /dev/dsk. More than
|
* -d Scan in a specific directory, other than /dev/. More than
|
||||||
* one directory can be specified using multiple '-d' options.
|
* one directory can be specified using multiple '-d' options.
|
||||||
*
|
*
|
||||||
* -D Scan for previously destroyed pools or import all or only
|
* -D Scan for previously destroyed pools or import all or only
|
||||||
|
@ -1757,12 +1757,6 @@ zpool_do_import(int argc, char **argv)
|
||||||
nvlist_add_uint32(policy, ZPOOL_REWIND_REQUEST, rewind_policy) != 0)
|
nvlist_add_uint32(policy, ZPOOL_REWIND_REQUEST, rewind_policy) != 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (searchdirs == NULL) {
|
|
||||||
searchdirs = safe_malloc(sizeof (char *));
|
|
||||||
searchdirs[0] = "/dev/dsk";
|
|
||||||
nsearch = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* check argument count */
|
/* check argument count */
|
||||||
if (do_all) {
|
if (do_all) {
|
||||||
if (argc != 0) {
|
if (argc != 0) {
|
||||||
|
|
|
@ -1042,6 +1042,7 @@ ztest_pattern_set(void *buf, uint64_t size, uint64_t value)
|
||||||
*ip++ = value;
|
*ip++ = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef NDEBUG
|
||||||
static boolean_t
|
static boolean_t
|
||||||
ztest_pattern_match(void *buf, uint64_t size, uint64_t value)
|
ztest_pattern_match(void *buf, uint64_t size, uint64_t value)
|
||||||
{
|
{
|
||||||
|
@ -1054,6 +1055,7 @@ ztest_pattern_match(void *buf, uint64_t size, uint64_t value)
|
||||||
|
|
||||||
return (diff == 0);
|
return (diff == 0);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ztest_bt_generate(ztest_block_tag_t *bt, objset_t *os, uint64_t object,
|
ztest_bt_generate(ztest_block_tag_t *bt, objset_t *os, uint64_t object,
|
||||||
|
@ -4770,7 +4772,6 @@ ztest_run_zdb(char *pool)
|
||||||
bin,
|
bin,
|
||||||
zopt_verbose >= 3 ? "s" : "",
|
zopt_verbose >= 3 ? "s" : "",
|
||||||
zopt_verbose >= 4 ? "v" : "",
|
zopt_verbose >= 4 ? "v" : "",
|
||||||
spa_config_path,
|
|
||||||
pool);
|
pool);
|
||||||
|
|
||||||
if (zopt_verbose >= 5)
|
if (zopt_verbose >= 5)
|
||||||
|
|
|
@ -53,7 +53,6 @@
|
||||||
#include <sys/vtoc.h>
|
#include <sys/vtoc.h>
|
||||||
#include <sys/dktp/fdisk.h>
|
#include <sys/dktp/fdisk.h>
|
||||||
#include <sys/efi_partition.h>
|
#include <sys/efi_partition.h>
|
||||||
#include <thread_pool.h>
|
|
||||||
|
|
||||||
#include <sys/vdev_impl.h>
|
#include <sys/vdev_impl.h>
|
||||||
#ifdef HAVE_LIBBLKID
|
#ifdef HAVE_LIBBLKID
|
||||||
|
@ -1004,13 +1003,10 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg)
|
||||||
vdev_entry_t *ve, *venext;
|
vdev_entry_t *ve, *venext;
|
||||||
config_entry_t *ce, *cenext;
|
config_entry_t *ce, *cenext;
|
||||||
name_entry_t *ne, *nenext;
|
name_entry_t *ne, *nenext;
|
||||||
avl_tree_t slice_cache;
|
|
||||||
rdsk_node_t *slice;
|
|
||||||
void *cookie;
|
|
||||||
|
|
||||||
verify(poolname == NULL || guid == 0);
|
verify(iarg->poolname == NULL || iarg->guid == 0);
|
||||||
|
|
||||||
if (argc == 0) {
|
if (dirs == 0) {
|
||||||
#ifdef HAVE_LIBBLKID
|
#ifdef HAVE_LIBBLKID
|
||||||
/* Use libblkid to scan all device for their type */
|
/* Use libblkid to scan all device for their type */
|
||||||
if (zpool_find_import_blkid(hdl, &pools) == 0)
|
if (zpool_find_import_blkid(hdl, &pools) == 0)
|
||||||
|
@ -1020,8 +1016,8 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg)
|
||||||
dgettext(TEXT_DOMAIN, "blkid failure falling back "
|
dgettext(TEXT_DOMAIN, "blkid failure falling back "
|
||||||
"to manual probing"));
|
"to manual probing"));
|
||||||
#endif /* HAVE_LIBBLKID */
|
#endif /* HAVE_LIBBLKID */
|
||||||
argc = 1;
|
dirs = 1;
|
||||||
argv = &default_dir;
|
dir = &default_dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1030,7 +1026,6 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg)
|
||||||
* and toplevel GUID.
|
* and toplevel GUID.
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < dirs; i++) {
|
for (i = 0; i < dirs; i++) {
|
||||||
tpool_t *t;
|
|
||||||
char *rdsk;
|
char *rdsk;
|
||||||
int dfd;
|
int dfd;
|
||||||
|
|
||||||
|
@ -1064,8 +1059,6 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg)
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
avl_create(&slice_cache, slice_cache_compare,
|
|
||||||
sizeof (rdsk_node_t), offsetof(rdsk_node_t, rn_node));
|
|
||||||
/*
|
/*
|
||||||
* This is not MT-safe, but we have no MT consumers of libzfs
|
* This is not MT-safe, but we have no MT consumers of libzfs
|
||||||
*/
|
*/
|
||||||
|
@ -1076,11 +1069,23 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do not open /dev/watchdog to stat it because
|
* Skip checking devices with well known prefixes:
|
||||||
* it requires a special close or the watchdog
|
* watchdog - A special close is required to avoid
|
||||||
* with be triggered and the system reset.
|
* triggering it and resetting the system.
|
||||||
|
* fuse - Fuse control device.
|
||||||
|
* ppp - Generic PPP driver.
|
||||||
|
* tty* - Generic serial interface.
|
||||||
|
* vcs* - Virtual console memory.
|
||||||
|
* parport* - Parallel port interface.
|
||||||
|
* lp* - Printer interface.
|
||||||
*/
|
*/
|
||||||
if (strcmp(name, "watchdog") == 0)
|
if ((strncmp(name, "watchdog", 8) == 0) ||
|
||||||
|
(strncmp(name, "fuse", 4) == 0) ||
|
||||||
|
(strncmp(name, "ppp", 3) == 0) ||
|
||||||
|
(strncmp(name, "tty", 3) == 0) ||
|
||||||
|
(strncmp(name, "vcs", 3) == 0) ||
|
||||||
|
(strncmp(name, "parport", 7) == 0) ||
|
||||||
|
(strncmp(name, "lp", 2) == 0))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ((fd = openat64(dfd, name, O_RDONLY)) < 0)
|
if ((fd = openat64(dfd, name, O_RDONLY)) < 0)
|
||||||
|
@ -1129,14 +1134,11 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* use the non-raw path for the config */
|
/* use the non-raw path for the config */
|
||||||
(void) strlcpy(end, slice->rn_name, pathleft);
|
(void) strlcpy(end, name, pathleft);
|
||||||
if (add_config(hdl, &pools, path, config) != 0)
|
if (add_config(hdl, &pools, path, config) != 0)
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
free(slice->rn_name);
|
|
||||||
free(slice);
|
|
||||||
}
|
}
|
||||||
avl_destroy(&slice_cache);
|
|
||||||
|
|
||||||
(void) closedir(dirp);
|
(void) closedir(dirp);
|
||||||
dirp = NULL;
|
dirp = NULL;
|
||||||
|
@ -1145,7 +1147,7 @@ zpool_find_import_impl(libzfs_handle_t *hdl, importargs_t *iarg)
|
||||||
#ifdef HAVE_LIBBLKID
|
#ifdef HAVE_LIBBLKID
|
||||||
skip_scanning:
|
skip_scanning:
|
||||||
#endif
|
#endif
|
||||||
ret = get_configs(hdl, &pools, active_ok);
|
ret = get_configs(hdl, &pools, iarg->can_be_active);
|
||||||
|
|
||||||
error:
|
error:
|
||||||
for (pe = pools.pools; pe != NULL; pe = penext) {
|
for (pe = pools.pools; pe != NULL; pe = penext) {
|
||||||
|
|
|
@ -1353,6 +1353,7 @@ sa_lookup(sa_handle_t *hdl, sa_attr_type_t attr, void *buf, uint32_t buflen)
|
||||||
int
|
int
|
||||||
sa_lookup_uio(sa_handle_t *hdl, sa_attr_type_t attr, uio_t *uio)
|
sa_lookup_uio(sa_handle_t *hdl, sa_attr_type_t attr, uio_t *uio)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
int error;
|
int error;
|
||||||
sa_bulk_attr_t bulk;
|
sa_bulk_attr_t bulk;
|
||||||
|
|
||||||
|
@ -1371,7 +1372,9 @@ sa_lookup_uio(sa_handle_t *hdl, sa_attr_type_t attr, uio_t *uio)
|
||||||
}
|
}
|
||||||
mutex_exit(&hdl->sa_lock);
|
mutex_exit(&hdl->sa_lock);
|
||||||
return (error);
|
return (error);
|
||||||
|
#else
|
||||||
|
return ENOSYS;
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,7 @@ sa_attr_reg_t zfs_attr_table[ZPL_END+1] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef _KERNEL
|
#ifdef _KERNEL
|
||||||
|
#ifdef HAVE_ZPL
|
||||||
int
|
int
|
||||||
zfs_sa_readlink(znode_t *zp, uio_t *uio)
|
zfs_sa_readlink(znode_t *zp, uio_t *uio)
|
||||||
{
|
{
|
||||||
|
@ -309,4 +309,5 @@ zfs_sa_upgrade_txholds(dmu_tx_t *tx, znode_t *zp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* HAVE_ZPL */
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue