diff options
| author | Jakob Unterwurzacher | 2018-07-02 23:54:37 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2018-07-02 23:54:37 +0200 | 
| commit | 893e41149ed353f355047003b89eeff456990e76 (patch) | |
| tree | 86c7708ca3adbb49b6cbc53d410645160fcb2610 /internal | |
| parent | c51fc9e07d287a95ce70b9fd8de8ea09a1d934c2 (diff) | |
fusefrontend: disallow O_DIRECT and fall back to buffered IO
O_DIRECT accesses must be aligned in both offset and length. Due to our
crypto header, alignment will be off, even if userspace makes aligned
accesses. Running xfstests generic/013 on ext4 used to trigger lots of
EINVAL errors due to missing alignment. Just fall back to buffered IO.
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/fusefrontend/fs.go | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/internal/fusefrontend/fs.go b/internal/fusefrontend/fs.go index f66e6d4..2cdc362 100644 --- a/internal/fusefrontend/fs.go +++ b/internal/fusefrontend/fs.go @@ -101,6 +101,11 @@ func (fs *FS) mangleOpenFlags(flags uint32) (newFlags int) {  	}  	// We also cannot open the file in append mode, we need to seek back for RMW  	newFlags = newFlags &^ os.O_APPEND +	// O_DIRECT accesses must be aligned in both offset and length. Due to our +	// crypto header, alignment will be off, even if userspace makes aligned +	// accesses. Running xfstests generic/013 on ext4 used to trigger lots of +	// EINVAL errors due to missing alignment. Just fall back to buffered IO. +	newFlags = newFlags &^ syscall.O_DIRECT  	return newFlags  } | 
