diff options
| author | stlpmo <hq-STLPMO@chinaunicom.cn> | 2019-12-24 16:36:15 +0800 |
|---|---|---|
| committer | stlpmo <hq-STLPMO@chinaunicom.cn> | 2019-12-24 16:36:15 +0800 |
| commit | f300c352669d4ac1aa4ea9ed9fc5feb4e9f7224b (patch) | |
| tree | 8d0f6e4b15b225f7ae563ba457860da9cd176c2e | |
| parent | a18f62bbe7e5e477fd891849b44ec5a25d8988d2 (diff) | |
| download | seaweedfs-f300c352669d4ac1aa4ea9ed9fc5feb4e9f7224b.tar.xz seaweedfs-f300c352669d4ac1aa4ea9ed9fc5feb4e9f7224b.zip | |
resolve issue : when the host disk full, the volume server will core dump
| -rw-r--r-- | weed/storage/volume_create.go | 5 | ||||
| -rw-r--r-- | weed/storage/volume_create_linux.go | 5 | ||||
| -rw-r--r-- | weed/storage/volume_create_windows.go | 11 |
3 files changed, 16 insertions, 5 deletions
diff --git a/weed/storage/volume_create.go b/weed/storage/volume_create.go index ee41c50a9..ffcb246a4 100644 --- a/weed/storage/volume_create.go +++ b/weed/storage/volume_create.go @@ -11,8 +11,11 @@ import ( func createVolumeFile(fileName string, preallocate int64, memoryMapSizeMB uint32) (backend.BackendStorageFile, error) { file, e := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) + if e != nil { + return nil, e + } if preallocate > 0 { glog.V(0).Infof("Preallocated disk space for %s is not supported", fileName) } - return backend.NewDiskFile(file), e + return backend.NewDiskFile(file), nil } diff --git a/weed/storage/volume_create_linux.go b/weed/storage/volume_create_linux.go index 5fafbe924..ee599ac32 100644 --- a/weed/storage/volume_create_linux.go +++ b/weed/storage/volume_create_linux.go @@ -12,9 +12,12 @@ import ( func createVolumeFile(fileName string, preallocate int64, memoryMapSizeMB uint32) (backend.BackendStorageFile, error) { file, e := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) + if e != nil { + return nil, e + } if preallocate != 0 { syscall.Fallocate(int(file.Fd()), 1, 0, preallocate) glog.V(0).Infof("Preallocated %d bytes disk space for %s", preallocate, fileName) } - return backend.NewDiskFile(file), e + return backend.NewDiskFile(file), nil } diff --git a/weed/storage/volume_create_windows.go b/weed/storage/volume_create_windows.go index 9e5d8f87d..e1c0b961f 100644 --- a/weed/storage/volume_create_windows.go +++ b/weed/storage/volume_create_windows.go @@ -12,17 +12,22 @@ import ( ) func createVolumeFile(fileName string, preallocate int64, memoryMapSizeMB uint32) (backend.BackendStorageFile, error) { - if preallocate > 0 { glog.V(0).Infof("Preallocated disk space for %s is not supported", fileName) } if memoryMapSizeMB > 0 { file, e := os_overloads.OpenFile(fileName, windows.O_RDWR|windows.O_CREAT, 0644, true) - return memory_map.NewMemoryMappedFile(file, memoryMapSizeMB), e + if e != nil { + return nil, e + } + return memory_map.NewMemoryMappedFile(file, memoryMapSizeMB), nil } else { file, e := os_overloads.OpenFile(fileName, windows.O_RDWR|windows.O_CREAT|windows.O_TRUNC, 0644, false) - return backend.NewDiskFile(file), e + if e != nil { + return nil, e + } + return backend.NewDiskFile(file), nil } } |
