Use O_EXCL when creating file as we never overwrite an existing file (#7189)

master
Krishna Srinivas 6 years ago committed by Harshavardhana
parent e9fdea05c6
commit 6f08edfb36
  1. 5
      cmd/posix.go
  2. 5
      cmd/xl-v1-object_test.go

@ -1105,8 +1105,9 @@ func (s *posix) WriteAll(volume, path string, buf []byte) (err error) {
return errFaultyDisk return errFaultyDisk
} }
// Create file if not found // Create file if not found. Note that it is created with os.O_EXCL flag as the file
w, err := s.openFile(volume, path, os.O_CREATE|os.O_SYNC|os.O_WRONLY) // always is supposed to be created in the tmp directory with a unique file name.
w, err := s.openFile(volume, path, os.O_CREATE|os.O_SYNC|os.O_WRONLY|os.O_EXCL)
if err != nil { if err != nil {
return err return err
} }

@ -323,6 +323,11 @@ func TestHealing(t *testing.T) {
t.Fatal("HealObject failed") t.Fatal("HealObject failed")
} }
err = os.RemoveAll(path.Join(fsDirs[0], bucket, object, "xl.json"))
if err != nil {
t.Fatal(err)
}
// Write xl.json with different modtime to simulate the case where a disk had // Write xl.json with different modtime to simulate the case where a disk had
// gone down when an object was replaced by a new object. // gone down when an object was replaced by a new object.
xlMetaOutDated := xlMetaPreHeal xlMetaOutDated := xlMetaPreHeal

Loading…
Cancel
Save