@@ -531,6 +531,17 @@ func (ls *layerStore) CreateRWLayer(name string, parent ChainID, opts *CreateRWL
531
531
if err := ls .driver .CreateReadWrite (m .mountID , parentID , createOpts ); err != nil {
532
532
return nil , err
533
533
}
534
+ defer func () {
535
+ if retErr != nil {
536
+ // cleanup on failure
537
+ if err := ls .driver .Remove (m .mountID ); err != nil {
538
+ log .G (context .TODO ()).WithFields (log.Fields {
539
+ "mountID" : m .mountID ,
540
+ "error" : err ,
541
+ }).Warnf ("Removing RWlayer after failure: %v" , retErr )
542
+ }
543
+ }
544
+ }()
534
545
if err := ls .saveMount (m ); err != nil {
535
546
return nil , err
536
547
}
@@ -642,7 +653,7 @@ func (ls *layerStore) saveMount(mount *mountedLayer) error {
642
653
return nil
643
654
}
644
655
645
- func (ls * layerStore ) initMount (graphID , parent , mountLabel string , initFunc MountInit , storageOpt map [string ]string ) (string , error ) {
656
+ func (ls * layerStore ) initMount (graphID , parent , mountLabel string , initFunc MountInit , storageOpt map [string ]string ) (ID string , retErr error ) {
646
657
// Use "<graph-id>-init" to maintain compatibility with graph drivers
647
658
// which are expecting this layer with this special name. If all
648
659
// graph drivers can be updated to not rely on knowing about this layer
@@ -657,6 +668,17 @@ func (ls *layerStore) initMount(graphID, parent, mountLabel string, initFunc Mou
657
668
if err := ls .driver .CreateReadWrite (initID , parent , createOpts ); err != nil {
658
669
return "" , err
659
670
}
671
+ defer func () {
672
+ if retErr != nil {
673
+ // cleanup on failure
674
+ if err := ls .driver .Remove (initID ); err != nil {
675
+ log .G (context .TODO ()).WithFields (log.Fields {
676
+ "initID" : initID ,
677
+ "error" : err ,
678
+ }).Warnf ("Removing RWlayer after failure: %v" , retErr )
679
+ }
680
+ }
681
+ }()
660
682
p , err := ls .driver .Get (initID , "" )
661
683
if err != nil {
662
684
return "" , err
0 commit comments