Remove unimplemented virus scanning hooks

Reviewed-by: Adam Moss <c@yotes.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Igor Kozhukhov <igor@dilos.org>
Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
Closes #11972
This commit is contained in:
Ryan Moeller 2021-05-11 01:02:25 -04:00 committed by GitHub
parent 38c6d6cedd
commit 4704be2879
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 1 additions and 62 deletions

View File

@ -55,8 +55,6 @@ typedef int umode_t;
#define VFS_NOSETUID MNT_NOSUID #define VFS_NOSETUID MNT_NOSUID
#define VFS_NOEXEC MNT_NOEXEC #define VFS_NOEXEC MNT_NOEXEC
#define fs_vscan(vp, cr, async) (0)
#define VROOT VV_ROOT #define VROOT VV_ROOT
#define XU_NGROUPS 16 #define XU_NGROUPS 16

View File

@ -98,7 +98,6 @@ struct zfsvfs {
struct zfsctl_root *z_ctldir; /* .zfs directory pointer */ struct zfsctl_root *z_ctldir; /* .zfs directory pointer */
boolean_t z_show_ctldir; /* expose .zfs in the root dir */ boolean_t z_show_ctldir; /* expose .zfs in the root dir */
boolean_t z_issnap; /* true if this is a snapshot */ boolean_t z_issnap; /* true if this is a snapshot */
boolean_t z_vscan; /* virus scan on/off */
boolean_t z_use_fuids; /* version allows fuids */ boolean_t z_use_fuids; /* version allows fuids */
boolean_t z_replay; /* set during ZIL replay */ boolean_t z_replay; /* set during ZIL replay */
boolean_t z_use_sa; /* version allow system attributes */ boolean_t z_use_sa; /* version allow system attributes */

View File

@ -113,7 +113,6 @@ struct zfsvfs {
struct inode *z_ctldir; /* .zfs directory inode */ struct inode *z_ctldir; /* .zfs directory inode */
boolean_t z_show_ctldir; /* expose .zfs in the root dir */ boolean_t z_show_ctldir; /* expose .zfs in the root dir */
boolean_t z_issnap; /* true if this is a snapshot */ boolean_t z_issnap; /* true if this is a snapshot */
boolean_t z_vscan; /* virus scan on/off */
boolean_t z_use_fuids; /* version allows fuids */ boolean_t z_use_fuids; /* version allows fuids */
boolean_t z_replay; /* set during ZIL replay */ boolean_t z_replay; /* set during ZIL replay */
boolean_t z_use_sa; /* version allow system attributes */ boolean_t z_use_sa; /* version allow system attributes */

View File

@ -1775,7 +1775,7 @@ In addition to enabling this property, the virus scan service must also be
enabled for virus scanning to occur. enabled for virus scanning to occur.
The default value is The default value is
.Sy off . .Sy off .
This property is not used on Linux. This property is not used by OpenZFS.
.It Sy xattr Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Sy sa .It Sy xattr Ns = Ns Sy on Ns | Ns Sy off Ns | Ns Sy sa
Controls whether extended attributes are enabled for this file system. Two Controls whether extended attributes are enabled for this file system. Two
styles of extended attributes are supported either directory based or system styles of extended attributes are supported either directory based or system

View File

@ -569,14 +569,6 @@ snapdir_changed_cb(void *arg, uint64_t newval)
zfsvfs->z_show_ctldir = newval; zfsvfs->z_show_ctldir = newval;
} }
static void
vscan_changed_cb(void *arg, uint64_t newval)
{
zfsvfs_t *zfsvfs = arg;
zfsvfs->z_vscan = newval;
}
static void static void
acl_mode_changed_cb(void *arg, uint64_t newval) acl_mode_changed_cb(void *arg, uint64_t newval)
{ {
@ -738,8 +730,6 @@ zfs_register_callbacks(vfs_t *vfsp)
error = error ? error : dsl_prop_register(ds, error = error ? error : dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_ACLINHERIT), acl_inherit_changed_cb, zfs_prop_to_name(ZFS_PROP_ACLINHERIT), acl_inherit_changed_cb,
zfsvfs); zfsvfs);
error = error ? error : dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_VSCAN), vscan_changed_cb, zfsvfs);
dsl_pool_config_exit(dmu_objset_pool(os), FTAG); dsl_pool_config_exit(dmu_objset_pool(os), FTAG);
if (error) if (error)
goto unregister; goto unregister;

View File

@ -231,15 +231,6 @@ zfs_open(vnode_t **vpp, int flag, cred_t *cr)
return (SET_ERROR(EPERM)); return (SET_ERROR(EPERM));
} }
if (!zfs_has_ctldir(zp) && zp->z_zfsvfs->z_vscan &&
ZTOV(zp)->v_type == VREG &&
!(zp->z_pflags & ZFS_AV_QUARANTINED) && zp->z_size > 0) {
if (fs_vscan(*vpp, cr, 0) != 0) {
ZFS_EXIT(zfsvfs);
return (SET_ERROR(EACCES));
}
}
/* Keep a count of the synchronous opens in the znode */ /* Keep a count of the synchronous opens in the znode */
if (flag & (FSYNC | FDSYNC)) if (flag & (FSYNC | FDSYNC))
atomic_inc_32(&zp->z_sync_cnt); atomic_inc_32(&zp->z_sync_cnt);
@ -262,11 +253,6 @@ zfs_close(vnode_t *vp, int flag, int count, offset_t offset, cred_t *cr)
if ((flag & (FSYNC | FDSYNC)) && (count == 1)) if ((flag & (FSYNC | FDSYNC)) && (count == 1))
atomic_dec_32(&zp->z_sync_cnt); atomic_dec_32(&zp->z_sync_cnt);
if (!zfs_has_ctldir(zp) && zp->z_zfsvfs->z_vscan &&
ZTOV(zp)->v_type == VREG &&
!(zp->z_pflags & ZFS_AV_QUARANTINED) && zp->z_size > 0)
VERIFY0(fs_vscan(vp, cr, 1));
ZFS_EXIT(zfsvfs); ZFS_EXIT(zfsvfs);
return (0); return (0);
} }

View File

@ -433,12 +433,6 @@ snapdir_changed_cb(void *arg, uint64_t newval)
((zfsvfs_t *)arg)->z_show_ctldir = newval; ((zfsvfs_t *)arg)->z_show_ctldir = newval;
} }
static void
vscan_changed_cb(void *arg, uint64_t newval)
{
((zfsvfs_t *)arg)->z_vscan = newval;
}
static void static void
acl_mode_changed_cb(void *arg, uint64_t newval) acl_mode_changed_cb(void *arg, uint64_t newval)
{ {
@ -511,8 +505,6 @@ zfs_register_callbacks(vfs_t *vfsp)
error = error ? error : dsl_prop_register(ds, error = error ? error : dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_ACLINHERIT), acl_inherit_changed_cb, zfs_prop_to_name(ZFS_PROP_ACLINHERIT), acl_inherit_changed_cb,
zfsvfs); zfsvfs);
error = error ? error : dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_VSCAN), vscan_changed_cb, zfsvfs);
error = error ? error : dsl_prop_register(ds, error = error ? error : dsl_prop_register(ds,
zfs_prop_to_name(ZFS_PROP_NBMAND), nbmand_changed_cb, zfsvfs); zfs_prop_to_name(ZFS_PROP_NBMAND), nbmand_changed_cb, zfsvfs);
dsl_pool_config_exit(dmu_objset_pool(os), FTAG); dsl_pool_config_exit(dmu_objset_pool(os), FTAG);

View File

@ -175,18 +175,6 @@
* return (error); // done, report error * return (error); // done, report error
*/ */
/*
* Virus scanning is unsupported. It would be possible to add a hook
* here to performance the required virus scan. This could be done
* entirely in the kernel or potentially as an update to invoke a
* scanning utility.
*/
static int
zfs_vscan(struct inode *ip, cred_t *cr, int async)
{
return (0);
}
/* ARGSUSED */ /* ARGSUSED */
int int
zfs_open(struct inode *ip, int mode, int flag, cred_t *cr) zfs_open(struct inode *ip, int mode, int flag, cred_t *cr)
@ -204,15 +192,6 @@ zfs_open(struct inode *ip, int mode, int flag, cred_t *cr)
return (SET_ERROR(EPERM)); return (SET_ERROR(EPERM));
} }
/* Virus scan eligible files on open */
if (!zfs_has_ctldir(zp) && zfsvfs->z_vscan && S_ISREG(ip->i_mode) &&
!(zp->z_pflags & ZFS_AV_QUARANTINED) && zp->z_size > 0) {
if (zfs_vscan(ip, cr, 0) != 0) {
ZFS_EXIT(zfsvfs);
return (SET_ERROR(EACCES));
}
}
/* Keep a count of the synchronous opens in the znode */ /* Keep a count of the synchronous opens in the znode */
if (flag & O_SYNC) if (flag & O_SYNC)
atomic_inc_32(&zp->z_sync_cnt); atomic_inc_32(&zp->z_sync_cnt);
@ -235,10 +214,6 @@ zfs_close(struct inode *ip, int flag, cred_t *cr)
if (flag & O_SYNC) if (flag & O_SYNC)
atomic_dec_32(&zp->z_sync_cnt); atomic_dec_32(&zp->z_sync_cnt);
if (!zfs_has_ctldir(zp) && zfsvfs->z_vscan && S_ISREG(ip->i_mode) &&
!(zp->z_pflags & ZFS_AV_QUARANTINED) && zp->z_size > 0)
VERIFY(zfs_vscan(ip, cr, 1) == 0);
ZFS_EXIT(zfsvfs); ZFS_EXIT(zfsvfs);
return (0); return (0);
} }