mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Downgrade FUSE minor version support and clarify comments
This commit is contained in:
+22
-31
@@ -151,34 +151,27 @@ type FUSEWriteIn struct {
|
||||
}
|
||||
|
||||
// FUSE_INIT flags, consistent with the ones in include/uapi/linux/fuse.h.
|
||||
// Our taget version is 7.23 but we have few implemented in advance.
|
||||
const (
|
||||
FUSE_ASYNC_READ = 1 << 0
|
||||
FUSE_POSIX_LOCKS = 1 << 1
|
||||
FUSE_FILE_OPS = 1 << 2
|
||||
FUSE_ATOMIC_O_TRUNC = 1 << 3
|
||||
FUSE_EXPORT_SUPPORT = 1 << 4
|
||||
FUSE_BIG_WRITES = 1 << 5
|
||||
FUSE_DONT_MASK = 1 << 6
|
||||
FUSE_SPLICE_WRITE = 1 << 7
|
||||
FUSE_SPLICE_MOVE = 1 << 8
|
||||
FUSE_SPLICE_READ = 1 << 9
|
||||
FUSE_FLOCK_LOCKS = 1 << 10
|
||||
FUSE_HAS_IOCTL_DIR = 1 << 11
|
||||
FUSE_AUTO_INVAL_DATA = 1 << 12
|
||||
FUSE_DO_READDIRPLUS = 1 << 13
|
||||
FUSE_READDIRPLUS_AUTO = 1 << 14
|
||||
FUSE_ASYNC_DIO = 1 << 15
|
||||
FUSE_WRITEBACK_CACHE = 1 << 16
|
||||
FUSE_NO_OPEN_SUPPORT = 1 << 17
|
||||
FUSE_PARALLEL_DIROPS = 1 << 18
|
||||
FUSE_HANDLE_KILLPRIV = 1 << 19
|
||||
FUSE_POSIX_ACL = 1 << 20
|
||||
FUSE_ABORT_ERROR = 1 << 21
|
||||
FUSE_MAX_PAGES = 1 << 22
|
||||
FUSE_CACHE_SYMLINKS = 1 << 23
|
||||
FUSE_NO_OPENDIR_SUPPORT = 1 << 24
|
||||
FUSE_EXPLICIT_INVAL_DATA = 1 << 25
|
||||
FUSE_MAP_ALIGNMENT = 1 << 26
|
||||
FUSE_ASYNC_READ = 1 << 0
|
||||
FUSE_POSIX_LOCKS = 1 << 1
|
||||
FUSE_FILE_OPS = 1 << 2
|
||||
FUSE_ATOMIC_O_TRUNC = 1 << 3
|
||||
FUSE_EXPORT_SUPPORT = 1 << 4
|
||||
FUSE_BIG_WRITES = 1 << 5
|
||||
FUSE_DONT_MASK = 1 << 6
|
||||
FUSE_SPLICE_WRITE = 1 << 7
|
||||
FUSE_SPLICE_MOVE = 1 << 8
|
||||
FUSE_SPLICE_READ = 1 << 9
|
||||
FUSE_FLOCK_LOCKS = 1 << 10
|
||||
FUSE_HAS_IOCTL_DIR = 1 << 11
|
||||
FUSE_AUTO_INVAL_DATA = 1 << 12
|
||||
FUSE_DO_READDIRPLUS = 1 << 13
|
||||
FUSE_READDIRPLUS_AUTO = 1 << 14
|
||||
FUSE_ASYNC_DIO = 1 << 15
|
||||
FUSE_WRITEBACK_CACHE = 1 << 16
|
||||
FUSE_NO_OPEN_SUPPORT = 1 << 17
|
||||
FUSE_MAX_PAGES = 1 << 22 // From FUSE 7.28
|
||||
)
|
||||
|
||||
// currently supported FUSE protocol version numbers.
|
||||
@@ -214,7 +207,7 @@ type FUSEInitIn struct {
|
||||
}
|
||||
|
||||
// FUSEInitOut is the reply sent by the daemon to the kernel
|
||||
// for FUSEInitIn.
|
||||
// for FUSEInitIn. We target FUSE 7.23; this struct supports 7.28.
|
||||
//
|
||||
// +marshal
|
||||
type FUSEInitOut struct {
|
||||
@@ -255,9 +248,7 @@ type FUSEInitOut struct {
|
||||
// if the value from daemon is too large.
|
||||
MaxPages uint16
|
||||
|
||||
// MapAlignment is an unknown field and not used by this package at this moment.
|
||||
// Use as a placeholder to be consistent with the FUSE protocol.
|
||||
MapAlignment uint16
|
||||
_ uint16
|
||||
|
||||
_ [8]uint32
|
||||
}
|
||||
|
||||
@@ -86,16 +86,22 @@ type connection struct {
|
||||
// attributeVersion is the version of connection's attributes.
|
||||
attributeVersion uint64
|
||||
|
||||
// We target FUSE 7.23.
|
||||
// The following FUSE_INIT flags are currently unsupported by this implementation:
|
||||
// - FUSE_EXPORT_SUPPORT
|
||||
// - FUSE_HANDLE_KILLPRIV
|
||||
// - FUSE_POSIX_LOCKS: requires POSIX locks
|
||||
// - FUSE_FLOCK_LOCKS: requires POSIX locks
|
||||
// - FUSE_AUTO_INVAL_DATA: requires page caching eviction
|
||||
// - FUSE_EXPLICIT_INVAL_DATA: requires page caching eviction
|
||||
// - FUSE_DO_READDIRPLUS/FUSE_READDIRPLUS_AUTO: requires FUSE_READDIRPLUS implementation
|
||||
// - FUSE_ASYNC_DIO
|
||||
// - FUSE_POSIX_ACL: affects defaultPermissions, posixACL, xattr handler
|
||||
// - FUSE_PARALLEL_DIROPS (7.25)
|
||||
// - FUSE_HANDLE_KILLPRIV (7.26)
|
||||
// - FUSE_POSIX_ACL: affects defaultPermissions, posixACL, xattr handler (7.26)
|
||||
// - FUSE_ABORT_ERROR (7.27)
|
||||
// - FUSE_CACHE_SYMLINKS (7.28)
|
||||
// - FUSE_NO_OPENDIR_SUPPORT (7.29)
|
||||
// - FUSE_EXPLICIT_INVAL_DATA: requires page caching eviction (7.30)
|
||||
// - FUSE_MAP_ALIGNMENT (7.31)
|
||||
|
||||
// initialized after receiving FUSE_INIT reply.
|
||||
// Until it's set, suspend sending FUSE requests.
|
||||
@@ -182,19 +188,11 @@ type connection struct {
|
||||
// Negotiated and only set in INIT.
|
||||
asyncRead bool
|
||||
|
||||
// abortErr is true if kernel need to return an unique read error after abort.
|
||||
// Negotiated and only set in INIT.
|
||||
abortErr bool
|
||||
|
||||
// writebackCache is true for write-back cache policy,
|
||||
// false for write-through policy.
|
||||
// Negotiated and only set in INIT.
|
||||
writebackCache bool
|
||||
|
||||
// cacheSymlinks if filesystem needs to cache READLINK responses in page cache.
|
||||
// Negotiated and only set in INIT.
|
||||
cacheSymlinks bool
|
||||
|
||||
// bigWrites if doing multi-page cached writes.
|
||||
// Negotiated and only set in INIT.
|
||||
bigWrites bool
|
||||
|
||||
@@ -132,8 +132,6 @@ func (conn *connection) initProcessReply(out *linux.FUSEInitOut, hasSysAdminCap
|
||||
conn.bigWrites = out.Flags&linux.FUSE_BIG_WRITES != 0
|
||||
conn.dontMask = out.Flags&linux.FUSE_DONT_MASK != 0
|
||||
conn.writebackCache = out.Flags&linux.FUSE_WRITEBACK_CACHE != 0
|
||||
conn.cacheSymlinks = out.Flags&linux.FUSE_CACHE_SYMLINKS != 0
|
||||
conn.abortErr = out.Flags&linux.FUSE_ABORT_ERROR != 0
|
||||
|
||||
// TODO(gvisor.dev/issue/3195): figure out how to use TimeGran (0 < TimeGran <= fuseMaxTimeGranNs).
|
||||
|
||||
|
||||
@@ -65,11 +65,6 @@ func (r *fuseInitRes) UnmarshalBytes(src []byte) {
|
||||
out.MaxPages = uint16(usermem.ByteOrder.Uint16(src[:2]))
|
||||
src = src[2:]
|
||||
}
|
||||
// Introduced in FUSE kernel version 7.31.
|
||||
if len(src) >= 2 {
|
||||
out.MapAlignment = uint16(usermem.ByteOrder.Uint16(src[:2]))
|
||||
src = src[2:]
|
||||
}
|
||||
}
|
||||
|
||||
// SizeBytes is the size of the payload of the FUSE_INIT response.
|
||||
|
||||
Reference in New Issue
Block a user