@@ -154,6 +154,7 @@ var (
154154 smbShareDeleteACL = map [string ]string {DefaultSMBAccessControlUser : DefaultSMBAccessControlUserType }
155155 lunMutex = locks .NewGCNamedMutex ()
156156 igroupMutex = locks .NewGCNamedMutex ()
157+ exportPolicyMutex = locks .NewGCNamedMutex ()
157158
158159 duringVolCloneAfterSnapCreation1 = fiji .Register ("duringVolCloneAfterSnapCreation1" , "ontap_common" )
159160 duringVolCloneAfterSnapCreation2 = fiji .Register ("duringVolCloneAfterSnapCreation2" , "ontap_common" )
@@ -305,9 +306,19 @@ func InitializeOntapConfig(
305306}
306307
307308func ensureExportPolicyExists (ctx context.Context , policyName string , clientAPI api.OntapAPI ) error {
309+ exportPolicyMutex .Lock (policyName )
310+ defer exportPolicyMutex .Unlock (policyName )
311+
308312 return clientAPI .ExportPolicyCreate (ctx , policyName )
309313}
310314
315+ func destroyExportPolicy (ctx context.Context , policyName string , clientAPI api.OntapAPI ) error {
316+ exportPolicyMutex .Lock (policyName )
317+ defer exportPolicyMutex .Unlock (policyName )
318+
319+ return clientAPI .ExportPolicyDestroy (ctx , policyName )
320+ }
321+
311322func getExportPolicyName (backendUUID string ) string {
312323 return fmt .Sprintf ("trident-%s" , backendUUID )
313324}
@@ -380,12 +391,15 @@ func ensureNodeAccessForPolicy(
380391 Logc (ctx ).WithFields (fields ).Debug (">>>> ensureNodeAccessForPolicy" )
381392 defer Logc (ctx ).WithFields (fields ).Debug ("<<<< ensureNodeAccessForPolicy" )
382393
394+ exportPolicyMutex .Lock (policyName )
395+ defer exportPolicyMutex .Unlock (policyName )
396+
383397 if exists , err := clientAPI .ExportPolicyExists (ctx , policyName ); err != nil {
384398 return err
385399 } else if ! exists {
386400 Logc (ctx ).WithField ("exportPolicy" , policyName ).Debug ("Export policy missing, will create it." )
387401
388- if err = ensureExportPolicyExists (ctx , policyName , clientAPI ); err != nil {
402+ if err = clientAPI . ExportPolicyCreate (ctx , policyName ); err != nil {
389403 return err
390404 }
391405 }
@@ -496,6 +510,9 @@ func reconcileExportPolicyRules(
496510 Logc (ctx ).WithFields (fields ).Debug (">>>> reconcileExportPolicyRules" )
497511 defer Logc (ctx ).WithFields (fields ).Debug ("<<<< reconcileExportPolicyRules" )
498512
513+ exportPolicyMutex .Lock (policyName )
514+ defer exportPolicyMutex .Unlock (policyName )
515+
499516 // first grab all existing rules
500517 existingRules , err := clientAPI .ExportRuleList (ctx , policyName )
501518 if err != nil {
@@ -4904,6 +4921,9 @@ func removeExportPolicyRules(
49044921 Logc (ctx ).WithFields (fields ).Debug (">>>> removeExportPolicyRules" )
49054922 defer Logc (ctx ).WithFields (fields ).Debug ("<<<< removeExportPolicyRules" )
49064923
4924+ exportPolicyMutex .Lock (exportPolicy )
4925+ defer exportPolicyMutex .Unlock (exportPolicy )
4926+
49074927 var removeRuleIndexes []int
49084928
49094929 nodeIPRules := make (map [string ]struct {})
0 commit comments