From 2fada376e4b9545e862ceb3115b5ca1dfad76523 Mon Sep 17 00:00:00 2001 From: Shuo Wu Date: Mon, 30 May 2022 12:38:14 +0800 Subject: [PATCH] Improve checksum calculation function There is no need to use direct IO during the calculation. Signed-off-by: Shuo Wu --- pkg/util/util.go | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/pkg/util/util.go b/pkg/util/util.go index 70b25757..373bd07f 100644 --- a/pkg/util/util.go +++ b/pkg/util/util.go @@ -20,8 +20,6 @@ import ( "github.com/sirupsen/logrus" "google.golang.org/grpc" "google.golang.org/grpc/connectivity" - - "github.com/longhorn/sparse-tools/sparse" ) const ( @@ -39,25 +37,15 @@ func PrintJSON(obj interface{}) error { } func GetFileChecksum(filePath string) (string, error) { - f, err := sparse.NewDirectFileIoProcessor(filePath, os.O_RDONLY, 0) + f, err := os.Open(filePath) if err != nil { return "", err } defer f.Close() - // 4MB - buf := make([]byte, 1<<22) h := sha512.New() - - for { - nr, err := f.Read(buf) - if err != nil { - if err != io.EOF { - return "", err - } - break - } - h.Write(buf[:nr]) + if _, err := io.Copy(h, f); err != nil { + return "", err } return hex.EncodeToString(h.Sum(nil)), nil