From 228e53351da64cdfe436260eec116c30e67d22d5 Mon Sep 17 00:00:00 2001 From: Jeremy Gill Date: Fri, 4 Sep 2020 13:28:51 -0400 Subject: [PATCH 1/2] Add support for block device storage endpoints. --- pkg/scsi/backingstore/common.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pkg/scsi/backingstore/common.go b/pkg/scsi/backingstore/common.go index 41cccc4..28b591f 100644 --- a/pkg/scsi/backingstore/common.go +++ b/pkg/scsi/backingstore/common.go @@ -19,6 +19,7 @@ package backingstore import ( "fmt" "os" + "io" "github.com/gostor/gotgt/pkg/api" "github.com/gostor/gotgt/pkg/scsi" @@ -51,14 +52,33 @@ func new() (api.BackingStore, error) { func (bs *FileBackingStore) Open(dev *api.SCSILu, path string) error { + var ( + mode os.FileMode + finfo os.FileInfo + ) + if finfo, err := os.Stat(path); err != nil { return err } else { - bs.DataSize = uint64(finfo.Size()) + // determine file type + mode = finfo.Mode() } f, err := os.OpenFile(path, os.O_RDWR, os.ModePerm) + if err == nil { + // block device filesize needs to be treated differently + if mode&os.ModeDevice != 0 { + pos, err := f.Seek(0, io.SeekEnd) + if err != nil { + return err + } + bs.DataSize = uint64(pos) + } else { + bs.DataSize = uint64(finfo.Size()) + } + } + bs.file = f return err } From a8468ecec8cb314da7aeb8ff9f317ab02a5c6610 Mon Sep 17 00:00:00 2001 From: Jeremy Gill Date: Tue, 15 Dec 2020 11:26:26 -0500 Subject: [PATCH 2/2] Resolve travis-ci / gofmt issue with common.go --- pkg/scsi/backingstore/common.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/scsi/backingstore/common.go b/pkg/scsi/backingstore/common.go index 28b591f..eca1f3f 100644 --- a/pkg/scsi/backingstore/common.go +++ b/pkg/scsi/backingstore/common.go @@ -18,8 +18,8 @@ package backingstore import ( "fmt" + "io" "os" - "io" "github.com/gostor/gotgt/pkg/api" "github.com/gostor/gotgt/pkg/scsi" @@ -53,7 +53,7 @@ func new() (api.BackingStore, error) { func (bs *FileBackingStore) Open(dev *api.SCSILu, path string) error { var ( - mode os.FileMode + mode os.FileMode finfo os.FileInfo ) @@ -66,9 +66,9 @@ func (bs *FileBackingStore) Open(dev *api.SCSILu, path string) error { f, err := os.OpenFile(path, os.O_RDWR, os.ModePerm) - if err == nil { + if err == nil { // block device filesize needs to be treated differently - if mode&os.ModeDevice != 0 { + if (mode & os.ModeDevice) != 0 { pos, err := f.Seek(0, io.SeekEnd) if err != nil { return err @@ -77,7 +77,7 @@ func (bs *FileBackingStore) Open(dev *api.SCSILu, path string) error { } else { bs.DataSize = uint64(finfo.Size()) } - } + } bs.file = f return err