mirror of https://github.com/facebook/rocksdb.git
Fix Fadvise on closed file when reads use mmap
Summary: ```PosixMmapReadableFile::fd_``` is closed after created, but needs to remain open for the lifetime of `PosixMmapReadableFile` since it is used whenever `InvalidateCache` is called. Closes https://github.com/facebook/rocksdb/pull/2764 Differential Revision: D8152515 Pulled By: ajkr fbshipit-source-id: b738a6a55ba4e392f9b0f374ff396a1e61c64f65
This commit is contained in:
parent
070319f7bb
commit
6e08916eb3
|
@ -241,9 +241,9 @@ class PosixEnv : public Env {
|
||||||
size, options));
|
size, options));
|
||||||
} else {
|
} else {
|
||||||
s = IOError("while mmap file for read", fname, errno);
|
s = IOError("while mmap file for read", fname, errno);
|
||||||
}
|
|
||||||
}
|
|
||||||
close(fd);
|
close(fd);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (options.use_direct_reads && !options.use_mmap_reads) {
|
if (options.use_direct_reads && !options.use_mmap_reads) {
|
||||||
#ifdef OS_MACOSX
|
#ifdef OS_MACOSX
|
||||||
|
|
|
@ -456,6 +456,7 @@ PosixMmapReadableFile::~PosixMmapReadableFile() {
|
||||||
fprintf(stdout, "failed to munmap %p length %" ROCKSDB_PRIszt " \n",
|
fprintf(stdout, "failed to munmap %p length %" ROCKSDB_PRIszt " \n",
|
||||||
mmapped_region_, length_);
|
mmapped_region_, length_);
|
||||||
}
|
}
|
||||||
|
close(fd_);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status PosixMmapReadableFile::Read(uint64_t offset, size_t n, Slice* result,
|
Status PosixMmapReadableFile::Read(uint64_t offset, size_t n, Slice* result,
|
||||||
|
|
Loading…
Reference in New Issue