@@ -43,7 +43,6 @@ type Connector struct {
43
43
TargetWWNs []string
44
44
Lun string
45
45
WWIDs []string
46
- io ioHandler
47
46
}
48
47
49
48
//OSioHandler is a wrapper that includes all the necessary io functions used for (Should be used as default io handler)
@@ -108,15 +107,19 @@ func findDeviceForPath(path string, io ioHandler) (string, error) {
108
107
return "" , errors .New ("Illegal path for device " + devicePath )
109
108
}
110
109
111
- func scsiHostRescan (io ioHandler ) {
110
+ func scsiHostRescan (io ioHandler ) error {
112
111
scsiPath := "/sys/class/scsi_host/"
113
112
if dirs , err := io .ReadDir (scsiPath ); err == nil {
114
113
for _ , f := range dirs {
115
114
name := scsiPath + f .Name () + "/scan"
116
115
data := []byte ("- - -" )
117
- io .WriteFile (name , data , 0666 )
116
+ err := io .WriteFile (name , data , 0666 )
117
+ if err != nil {
118
+ return fmt .Errorf ("scsi host rescan failed : error: %v" , err )
119
+ }
118
120
}
119
121
}
122
+ return nil
120
123
}
121
124
122
125
//func fcHostIssueLip(io ioHandler) {
@@ -145,7 +148,7 @@ func searchDisk(c Connector, io ioHandler) (string, error) {
145
148
// two-phase search:
146
149
// first phase, search existing device path, if a multipath dm is found, exit loop
147
150
// otherwise, in second phase, rescan scsi bus and search again, return with any findings
148
- for true {
151
+ for {
149
152
150
153
for _ , diskID := range diskIds {
151
154
if len (c .TargetWWNs ) != 0 {
@@ -165,7 +168,11 @@ func searchDisk(c Connector, io ioHandler) (string, error) {
165
168
}
166
169
// rescan and search again
167
170
// rescan scsi bus
168
- scsiHostRescan (io )
171
+
172
+ err := scsiHostRescan (io )
173
+ if err != nil {
174
+ return "" , err
175
+ }
169
176
//fcHostIssueLip(io)
170
177
rescaned = true
171
178
}
@@ -320,16 +327,20 @@ func detachFCDisk(devicePath string, io ioHandler) error {
320
327
}
321
328
arr := strings .Split (devicePath , "/" )
322
329
dev := arr [len (arr )- 1 ]
323
- removeFromScsiSubsystem (dev , io )
324
- return nil
330
+ err := removeFromScsiSubsystem (dev , io )
331
+ return err
325
332
}
326
333
327
334
// Removes a scsi device based upon /dev/sdX name
328
- func removeFromScsiSubsystem (deviceName string , io ioHandler ) {
335
+ func removeFromScsiSubsystem (deviceName string , io ioHandler ) error {
329
336
fileName := "/sys/block/" + deviceName + "/device/delete"
330
337
glog .Infof ("fc: remove device from scsi-subsystem: path: %s" , fileName )
331
338
data := []byte ("1" )
332
- io .WriteFile (fileName , data , 0666 )
339
+ err := io .WriteFile (fileName , data , 0666 )
340
+ if err != nil {
341
+ return fmt .Errorf ("failed remove from scsi subsystem : error: %v" , err )
342
+ }
343
+ return nil
333
344
}
334
345
335
346
func RemoveMultipathDevice (device string ) error {
0 commit comments