From a175ee068943f4e248d05c3655684a06f3326f3c Mon Sep 17 00:00:00 2001 From: Zygo Blaxell Date: Mon, 15 Jan 2018 23:07:12 -0500 Subject: [PATCH] bees: clean up #if 0 ... fsync ... #endif code Remove some dead code because dedup-related deadlocks have not been observed since Linux kernel v4.11. Preserve rationale of remaining #if 0 block (why we do write/rename instead of write/fsync/rename) so that people don't try to replace the "missing" fsync() there. Signed-off-by: Zygo Blaxell --- src/bees-context.cc | 7 ------- src/bees.cc | 6 ++++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/bees-context.cc b/src/bees-context.cc index fd360c5..62f8f05 100644 --- a/src/bees-context.cc +++ b/src/bees-context.cc @@ -173,13 +173,6 @@ BeesContext::dedup(const BeesRangePair &brp) brp.first.fd(shared_from_this()); brp.second.fd(shared_from_this()); -#if 0 - // This avoids some sort of kernel race condition; - // however, it also doubles our dedup times. - // Is avoiding a crash every few weeks worth it? - bees_sync(brp.first.fd()); -#endif - BEESTOOLONG("dedup " << brp); BeesAddress first_addr(brp.first.fd(), brp.first.begin()); diff --git a/src/bees.cc b/src/bees.cc index 91534ae..aa47609 100644 --- a/src/bees.cc +++ b/src/bees.cc @@ -416,6 +416,12 @@ BeesStringFile::write(string contents) // This triggers too many btrfs bugs. I wish I was kidding. // Forget snapshots, balance, compression, and dedup: // the system call you have to fear on btrfs is fsync(). + // Also note that when bees renames a temporary over an + // existing file, it flushes the temporary, so we get + // the right behavior if we just do nothing here + // (except when the file is first created; however, + // in that case the result is the same as if the file + // did not exist, was empty, or was filled with garbage). BEESNOTE("fsyncing " << tmpname << " in " << name_fd(m_dir_fd)); DIE_IF_NON_ZERO(fsync(ofd)); #endif