smbfs.h revision d67944fbe3fa0b31893a7116a09b0718eecf6078
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore/*
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * Copyright (c) 2000-2001, Boris Popov
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * All rights reserved.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore *
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * Redistribution and use in source and binary forms, with or without
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * modification, are permitted provided that the following conditions
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * are met:
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * 1. Redistributions of source code must retain the above copyright
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * notice, this list of conditions and the following disclaimer.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * 2. Redistributions in binary form must reproduce the above copyright
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * notice, this list of conditions and the following disclaimer in the
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * documentation and/or other materials provided with the distribution.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * 3. All advertising materials mentioning features or use of this software
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * must display the following acknowledgement:
cec7ac1b6fa4b80f0536354cbb975d004e78155bJosef 'Jeff' Sipek * This product includes software developed by Boris Popov.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * 4. Neither the name of the author nor the names of any co-contributors
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * may be used to endorse or promote products derived from this software
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * without specific prior written permission.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore *
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * SUCH DAMAGE.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore *
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * $Id: smbfs.h,v 1.30.100.1 2005/05/27 02:35:28 lindak Exp $
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore/*
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * Use is subject to license terms.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#ifndef _SMBFS_SMBFS_H
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#define _SMBFS_SMBFS_H
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore/*
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * FS-specific VFS structures for smbfs.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * (per-mount stuff, etc.)
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore *
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * This file used to have mount args stuff,
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * but that's now in sys/fs/smbfs_mount.h
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#include <sys/list.h>
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#include <sys/vfs.h>
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#include <sys/vfs_opreg.h>
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#include <sys/fs/smbfs_mount.h>
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore/*
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * SM_MAX_STATFSTIME is the maximum time to cache statvfs data. Since this
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * should be a fast call on the server, the time the data cached is short.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * That lets the cache handle bursts of statvfs() requests without generating
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * lots of network traffic.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#define SM_MAX_STATFSTIME 2
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore/* Mask values for smbmount structure sm_status field */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#define SM_STATUS_STATFS_BUSY 0x00000001 /* statvfs is in progress */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#define SM_STATUS_STATFS_WANT 0x00000002 /* statvfs wakeup is wanted */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#define SM_STATUS_TIMEO 0x00000004 /* this mount is not responding */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#define SM_STATUS_DEAD 0x00000010 /* connection gone - unmount this */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amoreextern const struct fs_operation_def smbfs_vnodeops_template[];
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amoreextern struct vnodeops *smbfs_vnodeops;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amorestruct smbnode;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amorestruct smb_share;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore/*
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * The values for smi_flags.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#define SMI_INT 0x01 /* interrupts allowed */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#define SMI_DEAD 0x02 /* zone shutting down */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore#define SMI_LLOCK 0x80 /* local locking only */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore/*
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * Corresponds to Darwin: struct smbmount
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amoretypedef struct smbmntinfo {
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct vfs *smi_vfsp; /* mount back pointer to vfs */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct smbnode *smi_root; /* the root node */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct smb_share *smi_share; /* netsmb SMB share conn data */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore kmutex_t smi_lock; /* mutex for flags, etc. */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore uint32_t smi_flags; /* NFS-derived flag bits */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore uint32_t smi_fsattr; /* acls & streams opts */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore uint32_t smi_status; /* status bits for this mount */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore hrtime_t smi_statfstime; /* sm_statvfsbuf cache time */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore statvfs64_t smi_statvfsbuf; /* cached statvfs data */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore kcondvar_t smi_statvfs_cv;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore /*
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * Kstat statistics
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct kstat *smi_io_kstats;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct kstat *smi_ro_kstats;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore /*
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * Zones support.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct zone *smi_zone; /* Zone mounted in */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore list_node_t smi_zone_node; /* Link to per-zone smi list */
cec7ac1b6fa4b80f0536354cbb975d004e78155bJosef 'Jeff' Sipek /* Lock for the list is: smi_globals_t -> smg_lock */
cec7ac1b6fa4b80f0536354cbb975d004e78155bJosef 'Jeff' Sipek
cec7ac1b6fa4b80f0536354cbb975d004e78155bJosef 'Jeff' Sipek /*
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore * Copy of the args from mount.
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore */
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct smbfs_args smi_args;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore} smbmntinfo_t;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amoretypedef struct smbfattr {
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore int fa_attr;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore len_t fa_size;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct timespec fa_atime;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct timespec fa_ctime;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct timespec fa_mtime;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore ino64_t fa_ino;
6b5e5868e7ebf1aff3a5abd7d0c4ef0e5fbf3648Garrett D'Amore struct timespec fa_reqtime;
} smbfattr_t;
/*
* vnode pointer to mount info
*/
#define VTOSMI(vp) ((smbmntinfo_t *)(((vp)->v_vfsp)->vfs_data))
#define VFTOSMI(vfsp) ((smbmntinfo_t *)((vfsp)->vfs_data))
#define SMBINTR(vp) (VTOSMI(vp)->smi_flags & SMI_INT)
#endif /* _SMBFS_SMBFS_H */