--- ./source/private_module/smb2/smb2_oplock_break.c	2018-08-21 03:58:47.000000000 +0000
+++ ./source/private_module/smb2/smb2_oplock_break.c.hotpatch	2018-09-19 01:17:44.000000000 +0000
@@ -238,9 +238,9 @@
     
     cancel_delayed_work_sync(&lease->delayedwork); 
 
-    spin_lock(&lease->l_lock);
-    lease->Breaking = false;
-    spin_unlock(&lease->l_lock);
+   //spin_lock(&lease->l_lock);
+   //lease->Breaking = false;
+   //spin_unlock(&lease->l_lock);
     
 #ifdef DEBUG_PERFORMANCE  
     atomic_inc(&(smb2_get_openlockstat()->cancel_timernum));
--- ./source/private_module/smb2/smb2_oplock_lease.c	2018-08-21 03:58:47.000000000 +0000
+++ ./source/private_module/smb2/smb2_oplock_lease.c.hotpatch	2018-09-19 01:17:44.000000000 +0000
@@ -851,20 +851,20 @@
 static void smb2_oplock_lease_add_one_lease(smb2_oplock_lease_t* oplock_lease, smb2_open_t* open)
 {
     smb2_lease_t* lease = NULL;
-
-    /* openbreakӰ죬ı伶,ʱ޷ͬoplock_lease,ͬ */
     oplock_lease->level = smb2_map_dlm_lease_to_lease(open->modebit);
-    NAS_DBG(MOD_NAS_PROTO, LOG_DEBUG, "Will add lease %d.", oplock_lease->level);
-
     lease = smb2_lease_get_one_lease(oplock_lease->lease.leasekey, oplock_lease->level, oplock_lease->lease.clientguid);
     CHECK_NULL_POINTER_NORET(lease);
-
-    //ǰleasebreak״̬ʱʱ϶lease
     if (atomic_read(&lease->total) < NAS_LOCK_MAX_LEASE_GRANTED)
     {
         (void)smb2_process_lease_updating(lease, open, oplock_lease);
     }
-
+    else{   
+		if (oplock_lease->level > 0)
+		{   oplock_lease->level = 0;OPEN_LOCK_DEL_LEASE_VALUE(open->modebit);
+	        if (0 != smb_update_open_lock((nas_file_t*)open->locolopen, open->modebit))
+			{NAS_DBG(MOD_NAS_PROTO, LOG_ERROR, "Update oplock break fail again.");}
+		}
+	}
     smb2_lease_put_one_lease(lease);
     return;
 }
