[PATCH] Consistently use zfs_ioctl()
Xin LI
delphij at delphij.net
Mon Jul 25 20:26:37 UTC 2011
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Hi,
Here is a patch that makes libzfs use zfs_ioctl consistently. Some
functionality in libzfs calls ioctl() directly with raw ZFS ioctls,
which causes some kernel message like:
WARNING pid 30031 (initial thread): ioctl sign-extension ioctl
ffffffffd5985a3a
Objections? I have kept #sun'ed out blocks out.
Cheers,
- --
Xin LI <delphij at delphij.net> https://www.delphij.net/
FreeBSD - The Power to Serve! Live free or die
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (FreeBSD)
iQEcBAEBCAAGBQJOLdF8AAoJEATO+BI/yjfBI0AH/04tS03WW0vIW/ywXp/FsHV6
bkkZQw7rjN2dnenHBTg3DNcjYlXpZOgRb/mnuwMsTxm/Xf/RVekfCLGoljwv7NNK
FUTozx7jVBvwAhjArvUTsVjpblnm2b+mS9TCWh9BWVhIr5N6sMALZxZkNvVTUVn+
ZXotIaqQPSVNdEC3BuvJsxyHAEutTPF8TvMojKhaRhxTPGGcrjQfVLHHR/YMLhY5
ED/7gJsvSTAi+gmtHWgF9q5oqN9sCE/Juy5XD0HcXok5dZ2cfjYYFacKbbjpXQhn
eYj8zSVPna0avCJ0YEivEO5LCEF9MLgTMGFJtV38mRandNdbU5UFNqA+m4WJeiM=
=zWDs
-----END PGP SIGNATURE-----
-------------- next part --------------
Index: cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
===================================================================
--- cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c (revision 224337)
+++ cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c (working copy)
@@ -2382,6 +2382,7 @@ zfs_prop_get_userquota_common(zfs_handle_t *zhp, c
{
int err;
zfs_cmd_t zc = { 0 };
+ libzfs_handle_t *hdl = zhp->zfs_hdl;
(void) strncpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name));
@@ -2392,7 +2393,7 @@ zfs_prop_get_userquota_common(zfs_handle_t *zhp, c
if (err)
return (err);
- err = ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_USERSPACE_ONE, &zc);
+ err = zfs_ioctl(hdl, ZFS_IOC_USERSPACE_ONE, &zc);
if (err)
return (err);
@@ -2458,11 +2459,12 @@ zfs_do_list_ioctl(zfs_handle_t *zhp, unsigned long
{
int rc;
uint64_t orig_cookie;
+ libzfs_handle_t *hdl = zhp->zfs_hdl;
orig_cookie = zc->zc_cookie;
top:
(void) strlcpy(zc->zc_name, zhp->zfs_name, sizeof (zc->zc_name));
- rc = ioctl(zhp->zfs_hdl->libzfs_fd, arg, zc);
+ rc = zfs_ioctl(hdl, arg, zc);
if (rc == -1) {
switch (errno) {
@@ -3800,7 +3802,7 @@ zfs_deleg_share_nfs(libzfs_handle_t *hdl, char *da
zc.zc_share.z_exportdata = (uint64_t)(uintptr_t)export;
zc.zc_share.z_sharetype = operation;
zc.zc_share.z_sharemax = sharemax;
- error = ioctl(hdl->libzfs_fd, ZFS_IOC_SHARE, &zc);
+ error = zfs_ioctl(hdl, ZFS_IOC_SHARE, &zc);
return (error);
}
@@ -3924,6 +3926,7 @@ zfs_userspace(zfs_handle_t *zhp, zfs_userquota_pro
zfs_userspace_cb_t func, void *arg)
{
zfs_cmd_t zc = { 0 };
+ libzfs_handle_t *hdl = zhp->zfs_hdl;
int error;
zfs_useracct_t buf[100];
@@ -3937,7 +3940,7 @@ zfs_userspace(zfs_handle_t *zhp, zfs_userquota_pro
zfs_useracct_t *zua = buf;
zc.zc_nvlist_dst_size = sizeof (buf);
- error = ioctl(zhp->zfs_hdl->libzfs_fd,
+ error = zfs_ioctl(hdl,
ZFS_IOC_USERSPACE_MANY, &zc);
if (error || zc.zc_nvlist_dst_size == 0)
break;
@@ -4316,7 +4319,7 @@ zfs_jail(zfs_handle_t *zhp, int jailid, int attach
zc.zc_jailid = jailid;
cmd = attach ? ZFS_IOC_JAIL : ZFS_IOC_UNJAIL;
- if ((ret = ioctl(hdl->libzfs_fd, cmd, &zc)) != 0)
+ if ((ret = zfs_ioctl(hdl, cmd, &zc)) != 0)
zfs_standard_error(hdl, errno, errbuf);
return (ret);
More information about the zfs-devel
mailing list