diff --git a/ecrire/inc/flock.php b/ecrire/inc/flock.php
index 754f4174ba7826522c6db85381866fdb38c70f74..634ac56b6acefaec8125d6b23e8515037243a429 100644
--- a/ecrire/inc/flock.php
+++ b/ecrire/inc/flock.php
@@ -242,8 +242,10 @@ function ecrire_fichier($fichier, $contenu, $ignorer_echec = false, $truncate =
 				spip_fclose_unlock($fp);
 				$fp = null;
 				// on rename vers la cible, ce qui est atomique quand on est pas sous windows
-				// au pire on arrive en second en cas de concurance, et le rename echoue
+				// au pire on arrive en second en cas de concurence, et le rename echoue
 				// --> on a la version de l'autre process qui doit etre identique
+				// sur certains fs lent, il semble que le rename echoue parce que notre propre lock est pas libéré assez vite...
+				// ce cas sera traité par le fallback avec eventuellement une tempo si besoin
 				if (@rename("$fichier.$id", $fichier)) {
 					$ok = file_exists($fichier);
 				}
@@ -260,10 +262,21 @@ function ecrire_fichier($fichier, $contenu, $ignorer_echec = false, $truncate =
 		// sinon ou si methode precedente a echoueee
 		// on se rabat sur file_put_contents direct sur le fichier
 		if (!$ok) {
+			clearstatcache();
 			$l = file_put_contents($fichier, $contenu, $truncate ? LOCK_EX : LOCK_EX | FILE_APPEND);
 			$ok = ($l === $longueur_a_ecrire);
 			if ($truncate) {
-				spip_logger('flock')->notice("ecrire_fichier: operation atomique via rename() impossible, fallback non atomique via file_put_contents");
+				spip_logger('flock')->notice("ecrire_fichier: operation atomique via rename() impossible, fallback non atomique via file_put_contents" . ($ok ? 'OK' : 'Fail'));
+			}
+			if (!$ok) {
+				// derniere tentative : on sait que file_put_contents marche dans le dossier considere
+				// c'est peut etre un probleme de tempo avant que le lock qu'on a nous meme posé soit libéré (fs lent)
+				usleep(250000);
+				$l = file_put_contents($fichier, $contenu, $truncate ? LOCK_EX : LOCK_EX | FILE_APPEND);
+				$ok = ($l === $longueur_a_ecrire);
+				if ($truncate) {
+					spip_logger('flock')->notice("ecrire_fichier: operation atomique via rename() impossible, fallback non atomique via tempo + file_put_contents : " . ($ok ? 'OK' : 'Fail'));
+				}
 			}
 		}