'Some places reference a path which will not cascade delete
We need to manually find all paths within this volume mount point'

def _delete(self, destroy=True, cascade=True, systemdataset=None):

    from freenasUI.services.models import iSCSITargetExtent
    if (systemdataset and systemdataset.sys_rrd_usedataset):
        reload_collectd = True
    else:
        reload_collectd = False
    svcs = ('cifs', 'afp', 'nfs', 'iscsitarget', 'jails', 'collectd')
    reloads = (False, False, False, False, False, reload_collectd)
    n = notifier()
    if cascade:
        reloads = list(map(sum, list(zip(reloads, self.delete_attachments()))))
        zvols = n.list_zfs_vols(self.vol_name)
        for zvol in zvols:
            qs = iSCSITargetExtent.objects.filter(iscsi_target_extent_path=('zvol/' + zvol), iscsi_target_extent_type='ZVOL')
            if qs.exists():
                if destroy:
                    notifier().destroy_zfs_vol(zvol)
                qs.delete()
            reloads = list(map(sum, list(zip(reloads, (False, False, False, True, False, reload_collectd)))))
    else:
        attachments = self.has_attachments()
        reloads = list(map(sum, list(zip(reloads, [len(attachments[svc]) for svc in svcs]))))
    Task.objects.filter((models.Q(task_filesystem=self.vol_name) | models.Q(task_filesystem__startswith=('%s/' % self.vol_name)))).delete()
    for (svc, dirty) in zip(svcs, reloads):
        if dirty:
            n.stop(svc)
    n.detach_volume_swaps(self)
    ghost = False
    try:
        status = n.get_volume_status(self.vol_name)
        ghost = (status == 'UNKNOWN')
    except:
        ghost = True
    if ghost:
        pass
    elif destroy:
        n.volume_destroy(self)
    else:
        n.volume_detach(self)
    return (svcs, reloads)
