Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/fuse/fuse.h
| Show All 26 Lines | |||||
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
| * | * | ||||
| * Copyright (C) 2005 Csaba Henk. | * Copyright (C) 2005 Csaba Henk. | ||||
| * All rights reserved. | * All rights reserved. | ||||
| * | * | ||||
| * Copyright (c) 2019 The FreeBSD Foundation | |||||
| * | |||||
| * Portions of this software were developed by BFF Storage Systems, LLC under | |||||
| * sponsorship from the FreeBSD Foundation. | |||||
| * | |||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| * modification, are permitted provided that the following conditions | * modification, are permitted provided that the following conditions | ||||
| * are met: | * are met: | ||||
| * 1. Redistributions of source code must retain the above copyright | * 1. Redistributions of source code must retain the above copyright | ||||
| * notice, this list of conditions and the following disclaimer. | * notice, this list of conditions and the following disclaimer. | ||||
| * 2. Redistributions in binary form must reproduce the above copyright | * 2. Redistributions in binary form must reproduce the above copyright | ||||
| * notice, this list of conditions and the following disclaimer in the | * notice, this list of conditions and the following disclaimer in the | ||||
| * documentation and/or other materials provided with the distribution. | * documentation and/or other materials provided with the distribution. | ||||
| Show All 14 Lines | |||||
| */ | */ | ||||
| #include "fuse_kernel.h" | #include "fuse_kernel.h" | ||||
| #define FUSE_DEFAULT_DAEMON_TIMEOUT 60 /* s */ | #define FUSE_DEFAULT_DAEMON_TIMEOUT 60 /* s */ | ||||
| #define FUSE_MIN_DAEMON_TIMEOUT 0 /* s */ | #define FUSE_MIN_DAEMON_TIMEOUT 0 /* s */ | ||||
| #define FUSE_MAX_DAEMON_TIMEOUT 600 /* s */ | #define FUSE_MAX_DAEMON_TIMEOUT 600 /* s */ | ||||
| #ifndef FUSE_FREEBSD_VERSION | |||||
| #define FUSE_FREEBSD_VERSION "0.4.4" | |||||
| #endif | |||||
| /* Mapping versions to features */ | |||||
| #define FUSE_KERNELABI_GEQ(maj, min) \ | |||||
| (FUSE_KERNEL_VERSION > (maj) || (FUSE_KERNEL_VERSION == (maj) && FUSE_KERNEL_MINOR_VERSION >= (min))) | |||||
| /* | |||||
| * Appearance of new FUSE operations is not always in par with version | |||||
| * numbering... At least, 7.3 is a sufficient condition for having | |||||
| * FUSE_{ACCESS,CREATE}. | |||||
| */ | |||||
| #if FUSE_KERNELABI_GEQ(7, 3) | |||||
| #ifndef FUSE_HAS_ACCESS | |||||
| #define FUSE_HAS_ACCESS 1 | |||||
| #endif | |||||
| #ifndef FUSE_HAS_CREATE | |||||
| #define FUSE_HAS_CREATE 1 | |||||
| #endif | |||||
| #else /* FUSE_KERNELABI_GEQ(7, 3) */ | |||||
| #ifndef FUSE_HAS_ACCESS | |||||
| #define FUSE_HAS_ACCESS 0 | |||||
| #endif | |||||
| #ifndef FUSE_HAS_CREATE | |||||
| #define FUSE_HAS_CREATE 0 | |||||
| #endif | |||||
| #endif | |||||
| #if FUSE_KERNELABI_GEQ(7, 7) | |||||
| #ifndef FUSE_HAS_GETLK | |||||
| #define FUSE_HAS_GETLK 1 | |||||
| #endif | |||||
| #ifndef FUSE_HAS_SETLK | |||||
| #define FUSE_HAS_SETLK 1 | |||||
| #endif | |||||
| #ifndef FUSE_HAS_SETLKW | |||||
| #define FUSE_HAS_SETLKW 1 | |||||
| #endif | |||||
| #ifndef FUSE_HAS_INTERRUPT | |||||
| #define FUSE_HAS_INTERRUPT 1 | |||||
| #endif | |||||
| #else /* FUSE_KERNELABI_GEQ(7, 7) */ | |||||
| #ifndef FUSE_HAS_GETLK | |||||
| #define FUSE_HAS_GETLK 0 | |||||
| #endif | |||||
| #ifndef FUSE_HAS_SETLK | |||||
| #define FUSE_HAS_SETLK 0 | |||||
| #endif | |||||
| #ifndef FUSE_HAS_SETLKW | |||||
| #define FUSE_HAS_SETLKW 0 | |||||
| #endif | |||||
| #ifndef FUSE_HAS_INTERRUPT | |||||
| #define FUSE_HAS_INTERRUPT 0 | |||||
| #endif | |||||
| #endif | |||||
| #if FUSE_KERNELABI_GEQ(7, 8) | |||||
| #ifndef FUSE_HAS_FLUSH_RELEASE | |||||
| #define FUSE_HAS_FLUSH_RELEASE 1 | |||||
| /* | |||||
| * "DESTROY" came in the middle of the 7.8 era, | |||||
| * so this is not completely exact... | |||||
| */ | |||||
| #ifndef FUSE_HAS_DESTROY | |||||
| #define FUSE_HAS_DESTROY 1 | |||||
| #endif | |||||
| #endif | |||||
| #else /* FUSE_KERNELABI_GEQ(7, 8) */ | |||||
| #ifndef FUSE_HAS_FLUSH_RELEASE | |||||
| #define FUSE_HAS_FLUSH_RELEASE 0 | |||||
| #ifndef FUSE_HAS_DESTROY | |||||
| #define FUSE_HAS_DESTROY 0 | |||||
| #endif | |||||
| #endif | |||||
| #endif | |||||
| /* misc */ | /* misc */ | ||||
| SYSCTL_DECL(_vfs_fusefs); | SYSCTL_DECL(_vfs_fusefs); | ||||
| SYSCTL_DECL(_vfs_fusefs_stats); | |||||
| /* Fuse locking */ | /* Fuse locking */ | ||||
| extern struct mtx fuse_mtx; | extern struct mtx fuse_mtx; | ||||
| #define FUSE_LOCK() fuse_lck_mtx_lock(fuse_mtx) | #define FUSE_LOCK() fuse_lck_mtx_lock(fuse_mtx) | ||||
| #define FUSE_UNLOCK() fuse_lck_mtx_unlock(fuse_mtx) | #define FUSE_UNLOCK() fuse_lck_mtx_unlock(fuse_mtx) | ||||
| #define RECTIFY_TDCR(td, cred) \ | #define RECTIFY_TDCR(td, cred) \ | ||||
| Show All 15 Lines | |||||