50 lines
1.5 KiB
Go
50 lines
1.5 KiB
Go
/*
|
|
* MinIO Cloud Storage, (C) 2018-2020 MinIO, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package disk
|
|
|
|
// Info stat fs struct is container which holds following values
|
|
// Total - total size of the volume / disk
|
|
// Free - free size of the volume / disk
|
|
// Files - total inodes available
|
|
// Ffree - free inodes available
|
|
// FSType - file system type
|
|
type Info struct {
|
|
Total uint64
|
|
Free uint64
|
|
Used uint64
|
|
Files uint64
|
|
Ffree uint64
|
|
FSType string
|
|
}
|
|
|
|
// SameDisk reports whether di1 and di2 describe the same disk.
|
|
func SameDisk(di1, di2 Info) bool {
|
|
if di1.Total != di2.Total {
|
|
// disk total size different
|
|
return false
|
|
}
|
|
|
|
if di1.Files != di2.Files {
|
|
// disk total inodes different
|
|
return false
|
|
}
|
|
|
|
// returns true only if Used, Free are same, then its the same disk.
|
|
// we are deliberately not using free inodes as that is unreliable
|
|
// due the fact that Ffree can vary even for temporary files
|
|
return di1.Used == di2.Used && di1.Free == di2.Free
|
|
}
|