Merge branch 'linux-have-zvol' into refs/top-bases/linux-zfs-branch
This commit is contained in:
commit
3a8d93c102
|
@ -3981,6 +3981,11 @@ zvol_create_link(libzfs_handle_t *hdl, const char *dataset)
|
||||||
static int
|
static int
|
||||||
zvol_create_link_common(libzfs_handle_t *hdl, const char *dataset, int ifexists)
|
zvol_create_link_common(libzfs_handle_t *hdl, const char *dataset, int ifexists)
|
||||||
{
|
{
|
||||||
|
#if !defined(HAVE_ZVOL)
|
||||||
|
return (zfs_standard_error_fmt(hdl, ENOTSUP,
|
||||||
|
dgettext(TEXT_DOMAIN, "cannot create device links "
|
||||||
|
"for '%s'"), dataset));
|
||||||
|
#else
|
||||||
zfs_cmd_t zc = { 0 };
|
zfs_cmd_t zc = { 0 };
|
||||||
di_devlink_handle_t dhdl;
|
di_devlink_handle_t dhdl;
|
||||||
priv_set_t *priv_effective;
|
priv_set_t *priv_effective;
|
||||||
|
@ -4069,6 +4074,7 @@ zvol_create_link_common(libzfs_handle_t *hdl, const char *dataset, int ifexists)
|
||||||
}
|
}
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -4205,6 +4211,9 @@ zfs_expand_proplist(zfs_handle_t *zhp, zprop_list_t **plp)
|
||||||
int
|
int
|
||||||
zfs_iscsi_perm_check(libzfs_handle_t *hdl, char *dataset, ucred_t *cred)
|
zfs_iscsi_perm_check(libzfs_handle_t *hdl, char *dataset, ucred_t *cred)
|
||||||
{
|
{
|
||||||
|
#if !defined(HAVE_ZVOL)
|
||||||
|
return (ENOTSUP);
|
||||||
|
#else
|
||||||
zfs_cmd_t zc = { 0 };
|
zfs_cmd_t zc = { 0 };
|
||||||
nvlist_t *nvp;
|
nvlist_t *nvp;
|
||||||
gid_t gid;
|
gid_t gid;
|
||||||
|
@ -4246,6 +4255,7 @@ zfs_iscsi_perm_check(libzfs_handle_t *hdl, char *dataset, ucred_t *cred)
|
||||||
error = ioctl(hdl->libzfs_fd, ZFS_IOC_ISCSI_PERM_CHECK, &zc);
|
error = ioctl(hdl->libzfs_fd, ZFS_IOC_ISCSI_PERM_CHECK, &zc);
|
||||||
nvlist_free(nvp);
|
nvlist_free(nvp);
|
||||||
return (error);
|
return (error);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
|
@ -2088,6 +2088,7 @@ int
|
||||||
zpool_iter_zvol(zpool_handle_t *zhp, int (*cb)(const char *, void *),
|
zpool_iter_zvol(zpool_handle_t *zhp, int (*cb)(const char *, void *),
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_ZVOL
|
||||||
libzfs_handle_t *hdl = zhp->zpool_hdl;
|
libzfs_handle_t *hdl = zhp->zpool_hdl;
|
||||||
char (*paths)[MAXPATHLEN];
|
char (*paths)[MAXPATHLEN];
|
||||||
size_t size = 4;
|
size_t size = 4;
|
||||||
|
@ -2179,6 +2180,7 @@ zpool_iter_zvol(zpool_handle_t *zhp, int (*cb)(const char *, void *),
|
||||||
err:
|
err:
|
||||||
free(paths);
|
free(paths);
|
||||||
(void) close(base);
|
(void) close(base);
|
||||||
|
#endif
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,11 @@
|
||||||
#include <sys/zvol.h>
|
#include <sys/zvol.h>
|
||||||
#include <sys/dumphdr.h>
|
#include <sys/dumphdr.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_SPL
|
||||||
|
#include <linux/bitops.h>
|
||||||
|
#include <linux/bitops_compat.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "zfs_namecheck.h"
|
#include "zfs_namecheck.h"
|
||||||
|
|
||||||
static void *zvol_state;
|
static void *zvol_state;
|
||||||
|
@ -159,10 +164,22 @@ zvol_check_volsize(uint64_t volsize, uint64_t blocksize)
|
||||||
if (volsize % blocksize != 0)
|
if (volsize % blocksize != 0)
|
||||||
return (EINVAL);
|
return (EINVAL);
|
||||||
|
|
||||||
#ifdef _ILP32
|
#ifdef HAVE_SPL
|
||||||
|
if (volsize % 512 != 0)
|
||||||
|
return (EINVAL);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* On Linux, the maximum allowed block device size depends on the size
|
||||||
|
* of sector_t.
|
||||||
|
*/
|
||||||
|
if (fls64(volsize / 512 - 1) > NBBY * sizeof (sector_t))
|
||||||
|
return (EOVERFLOW);
|
||||||
|
|
||||||
|
#elif defined(_ILP32)
|
||||||
if (volsize - 1 > SPEC_MAXOFFSET_T)
|
if (volsize - 1 > SPEC_MAXOFFSET_T)
|
||||||
return (EOVERFLOW);
|
return (EOVERFLOW);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue