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 |