From: Sage Weil Date: Thu, 10 Dec 2015 22:21:03 +0000 (-0500) Subject: os/bluestore/BlueFS: all overwrites on open_for_write X-Git-Tag: v10.0.3~154^2~140 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f80b3359b038af3dd4afec923c7ff8448a151b0c;p=ceph.git os/bluestore/BlueFS: all overwrites on open_for_write rocksdb will occasionally overwrite an existing file if it is not present/valid in the manifest. Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueFS.cc b/src/os/bluestore/BlueFS.cc index 9cd90605c307..f41efd89caf9 100644 --- a/src/os/bluestore/BlueFS.cc +++ b/src/os/bluestore/BlueFS.cc @@ -1117,13 +1117,18 @@ int BlueFS::open_for_write( log_t.op_dir_link(dirname, filename, file->fnode.ino); } else { // overwrite existing file? + file = q->second; if (!overwrite) { dout(20) << __func__ << " dir " << dirname << " (" << dir << ") file " << filename - << " already exists" << dendl; - return -EEXIST; + << " already exists, overwriting" << dendl; + } else { + dout(20) << __func__ << " dir " << dirname << " (" << dir + << ") file " << filename + << " already exists, overwriting" << dendl; + file->fnode.size = 0; } - file = q->second; + file->fnode.mtime = ceph_clock_now(NULL); log_t.op_file_update(file->fnode); }