Revert most of "fusefrontend: clamp oversized reads"
We cannot return less data than requested to the kernel!
From https://libfuse.github.io/doxygen/structfuse__operations.html:
Read should return exactly the number of bytes
requested except on EOF or error, otherwise the
rest of the data will be substituted with
zeroes.
Reverts commit 3009ec9852
minus
the formatting improvements we want to keep.
Fixes https://github.com/rfjakob/gocryptfs/issues/147
Reopens https://github.com/rfjakob/gocryptfs/issues/145
This commit is contained in:
parent
b3c20e512f
commit
268e0484e2
|
@ -132,8 +132,6 @@ func (f *file) createHeader() (fileID []byte, err error) {
|
|||
return h.ID, err
|
||||
}
|
||||
|
||||
var oversizedReadWarn sync.Once
|
||||
|
||||
// doRead - read "length" plaintext bytes from plaintext offset "off" and append
|
||||
// to "dst".
|
||||
// Arguments "length" and "off" do not have to be block-aligned.
|
||||
|
@ -144,16 +142,6 @@ var oversizedReadWarn sync.Once
|
|||
// Called by Read() for normal reading,
|
||||
// by Write() and Truncate() for Read-Modify-Write
|
||||
func (f *file) doRead(dst []byte, off uint64, length uint64) ([]byte, fuse.Status) {
|
||||
// Our byte cache pools are sized acc. to MAX_KERNEL_WRITE, but the
|
||||
// running kernel may have a higher limit set. Clamp to what we can
|
||||
// handle.
|
||||
if length > fuse.MAX_KERNEL_WRITE {
|
||||
oversizedReadWarn.Do(func() {
|
||||
tlog.Warn.Printf("doRead: truncating oversized read: %d to %d bytes",
|
||||
length, fuse.MAX_KERNEL_WRITE)
|
||||
})
|
||||
length = fuse.MAX_KERNEL_WRITE
|
||||
}
|
||||
// Make sure we have the file ID.
|
||||
f.fileTableEntry.HeaderLock.RLock()
|
||||
if f.fileTableEntry.ID == nil {
|
||||
|
|
Loading…
Reference in New Issue