mirror of https://github.com/openzfs/zfs.git
Restore support for in-kernel ZFS ioctls
In Illumos it is possible to call ioctl functions from within the kernel by passing the FKIOCTL flag. Neither FreeBSD nor Linux support that, but it doesn't hurt to keep it around, as all the code is there. Before this commit it was a dead code and zc_iflags was always zero. Restore this functionality by allowing to pass a flag to the zfsdev_ioctl_common() function. Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Pawel Jakub Dawidek <pawel@dawidek.net> Closes #10417
This commit is contained in:
parent
77b998fa70
commit
529246df96
|
@ -86,7 +86,7 @@ boolean_t zfs_vfs_held(zfsvfs_t *);
|
|||
int zfs_vfs_ref(zfsvfs_t **);
|
||||
void zfs_vfs_rele(zfsvfs_t *);
|
||||
|
||||
long zfsdev_ioctl_common(uint_t, zfs_cmd_t *);
|
||||
long zfsdev_ioctl_common(uint_t, zfs_cmd_t *, int);
|
||||
int zfsdev_attach(void);
|
||||
void zfsdev_detach(void);
|
||||
int zfs_kmod_init(void);
|
||||
|
|
|
@ -196,7 +196,7 @@ zfsdev_ioctl(struct cdev *dev, ulong_t zcmd, caddr_t arg, int flag,
|
|||
error = SET_ERROR(EFAULT);
|
||||
goto out;
|
||||
}
|
||||
error = zfsdev_ioctl_common(vecnum, zc);
|
||||
error = zfsdev_ioctl_common(vecnum, zc, 0);
|
||||
if (zcl) {
|
||||
zfs_cmd_zof_to_bsd12(zc, zcl);
|
||||
rc = copyout(zcl, uaddr, sizeof (*zcl));
|
||||
|
|
|
@ -191,7 +191,7 @@ zfsdev_ioctl(struct file *filp, unsigned cmd, unsigned long arg)
|
|||
error = -SET_ERROR(EFAULT);
|
||||
goto out;
|
||||
}
|
||||
error = -zfsdev_ioctl_common(vecnum, zc);
|
||||
error = -zfsdev_ioctl_common(vecnum, zc, 0);
|
||||
rc = ddi_copyout(zc, (void *)(uintptr_t)arg, sizeof (zfs_cmd_t), 0);
|
||||
if (error == 0 && rc != 0)
|
||||
error = -SET_ERROR(EFAULT);
|
||||
|
|
|
@ -7375,9 +7375,9 @@ zfsdev_minor_alloc(void)
|
|||
}
|
||||
|
||||
long
|
||||
zfsdev_ioctl_common(uint_t vecnum, zfs_cmd_t *zc)
|
||||
zfsdev_ioctl_common(uint_t vecnum, zfs_cmd_t *zc, int flag)
|
||||
{
|
||||
int error, cmd, flag = 0;
|
||||
int error, cmd;
|
||||
const zfs_ioc_vec_t *vec;
|
||||
char *saved_poolname = NULL;
|
||||
nvlist_t *innvl = NULL;
|
||||
|
|
Loading…
Reference in New Issue