Skip to content

Commit c14374f

Browse files
committed
Unmount disconnected filesystem when quorum lost
1 parent c4391a5 commit c14374f

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

driver.go

+12-9
Original file line numberDiff line numberDiff line change
@@ -265,16 +265,19 @@ func (l *LinstorDriver) Get(req *volume.GetRequest) (*volume.GetResponse, error)
265265
return nil, err
266266
}
267267
ctx := context.Background()
268-
resourceDef, err := c.ResourceDefinitions.Get(ctx, req.Name)
269-
if err != nil {
268+
name := req.Name
269+
resourceDef, err := c.ResourceDefinitions.Get(ctx, name)
270+
if err == nil {
271+
if resourceDef.Props[pluginFlagKey] != pluginFlagValue {
272+
return nil, fmt.Errorf("Volume '%s' is not managed by this plugin", name)
273+
}
274+
name = resourceDef.Name
275+
} else if l.mountPoint(name) == "" {
270276
return nil, err
271277
}
272-
if resourceDef.Props[pluginFlagKey] != pluginFlagValue {
273-
return nil, fmt.Errorf("Volume '%s' is not managed by this plugin", req.Name)
274-
}
275278
vol := &volume.Volume{
276-
Name: resourceDef.Name,
277-
Mountpoint: l.mountPoint(resourceDef.Name),
279+
Name: name,
280+
Mountpoint: l.mountPoint(name),
278281
}
279282
return &volume.GetResponse{vol}, nil
280283
}
@@ -380,7 +383,7 @@ func (l *LinstorDriver) Mount(req *volume.MountRequest) (*volume.MountResponse,
380383
func (l *LinstorDriver) Unmount(req *volume.UnmountRequest) error {
381384
target := l.realMountPath(req.Name)
382385
notMounted, err := l.mounter.IsNotMountPoint(target)
383-
if err != nil || notMounted {
386+
if (err != nil || notMounted) && !mount.IsCorruptedMnt(err) {
384387
return err
385388
}
386389
if err = l.mounter.Unmount(target); err != nil {
@@ -429,7 +432,7 @@ func (l *LinstorDriver) reportedMountPath(name string) string {
429432
func (l *LinstorDriver) mountPoint(name string) string {
430433
path := l.realMountPath(name)
431434
notMounted, err := l.mounter.IsNotMountPoint(path)
432-
if err != nil || notMounted {
435+
if (err != nil || notMounted) && !mount.IsCorruptedMnt(err) {
433436
return ""
434437
}
435438
return l.reportedMountPath(name)

0 commit comments

Comments
 (0)