Fix fd leak when using direct IOs

Summary:
We should close the fd, before overriding it. This bug was
introduced by f89caa127b
Closes https://github.com/facebook/rocksdb/pull/1553

Differential Revision: D4214101

Pulled By: siying

fbshipit-source-id: 0d65de0
main
Changli Gao 8 years ago committed by Facebook Github Bot
parent fd43ee09da
commit 548d7fb261
  1. 3
      util/env_posix.cc

@ -157,6 +157,7 @@ class PosixEnv : public Env {
*result = nullptr;
return IOError(fname, errno);
} else if (options.use_direct_reads && !options.use_mmap_writes) {
fclose(f);
#ifdef OS_MACOSX
int flags = O_RDONLY;
#else
@ -215,6 +216,7 @@ class PosixEnv : public Env {
}
close(fd);
} else if (options.use_direct_reads) {
close(fd);
#ifdef OS_MACOSX
int flags = O_RDONLY;
#else
@ -269,6 +271,7 @@ class PosixEnv : public Env {
if (options.use_mmap_writes && !forceMmapOff) {
result->reset(new PosixMmapFile(fname, fd, page_size_, options));
} else if (options.use_direct_writes) {
close(fd);
#ifdef OS_MACOSX
int flags = O_WRONLY | O_APPEND | O_TRUNC | O_CREAT;
#else

Loading…
Cancel
Save