MEDIUM: backend: Use the new _HA_ATOMIC_* macros.

Use the new _HA_ATOMIC_* macros and add barriers where needed.
diff --git a/src/backend.c b/src/backend.c
index dfdb9b5..5e82bf4 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -813,8 +813,8 @@
 			goto out;
 		}
 		else if (srv != prev_srv) {
-			HA_ATOMIC_ADD(&s->be->be_counters.cum_lbconn, 1);
-			HA_ATOMIC_ADD(&srv->counters.cum_lbconn, 1);
+			_HA_ATOMIC_ADD(&s->be->be_counters.cum_lbconn, 1);
+			_HA_ATOMIC_ADD(&srv->counters.cum_lbconn, 1);
 		}
 		s->target = &srv->obj_type;
 	}
@@ -994,11 +994,11 @@
 					s->txn->flags |= TX_CK_DOWN;
 				}
 				s->flags |= SF_REDISP;
-				HA_ATOMIC_ADD(&prev_srv->counters.redispatches, 1);
-				HA_ATOMIC_ADD(&s->be->be_counters.redispatches, 1);
+				_HA_ATOMIC_ADD(&prev_srv->counters.redispatches, 1);
+				_HA_ATOMIC_ADD(&s->be->be_counters.redispatches, 1);
 			} else {
-				HA_ATOMIC_ADD(&prev_srv->counters.retries, 1);
-				HA_ATOMIC_ADD(&s->be->be_counters.retries, 1);
+				_HA_ATOMIC_ADD(&prev_srv->counters.retries, 1);
+				_HA_ATOMIC_ADD(&s->be->be_counters.retries, 1);
 			}
 		}
 	}
@@ -1343,7 +1343,8 @@
 	 */
 	if (reuse && reuse_orphan) {
 		srv_conn->idle_time = 0;
-		HA_ATOMIC_SUB(&srv->curr_idle_conns, 1);
+		_HA_ATOMIC_SUB(&srv->curr_idle_conns, 1);
+		__ha_barrier_atomic_store();
 		srv->curr_idle_thr[tid]--;
 		LIST_ADDQ(&srv->idle_conns[tid], &srv_conn->list);
 	} else if (reuse) {
@@ -1514,13 +1515,13 @@
 		s->si[1].flags |= SI_FL_NOLINGER;
 
 	if (s->flags & SF_SRV_REUSED) {
-		HA_ATOMIC_ADD(&s->be->be_counters.reuse, 1);
+		_HA_ATOMIC_ADD(&s->be->be_counters.reuse, 1);
 		if (srv)
-			HA_ATOMIC_ADD(&srv->counters.reuse, 1);
+			_HA_ATOMIC_ADD(&srv->counters.reuse, 1);
 	} else {
-		HA_ATOMIC_ADD(&s->be->be_counters.connect, 1);
+		_HA_ATOMIC_ADD(&s->be->be_counters.connect, 1);
 		if (srv)
-			HA_ATOMIC_ADD(&srv->counters.connect, 1);
+			_HA_ATOMIC_ADD(&srv->counters.connect, 1);
 	}
 
 	err = si_connect(&s->si[1], srv_conn);
@@ -1565,7 +1566,7 @@
 		int count;
 
 		s->flags |= SF_CURR_SESS;
-		count = HA_ATOMIC_ADD(&srv->cur_sess, 1);
+		count = _HA_ATOMIC_ADD(&srv->cur_sess, 1);
 		HA_ATOMIC_UPDATE_MAX(&srv->counters.cur_sess_max, count);
 		if (s->be->lbprm.server_take_conn)
 			s->be->lbprm.server_take_conn(srv);
@@ -1658,8 +1659,8 @@
 			s->si[1].err_type = SI_ET_QUEUE_ERR;
 		}
 
-		HA_ATOMIC_ADD(&srv->counters.failed_conns, 1);
-		HA_ATOMIC_ADD(&s->be->be_counters.failed_conns, 1);
+		_HA_ATOMIC_ADD(&srv->counters.failed_conns, 1);
+		_HA_ATOMIC_ADD(&s->be->be_counters.failed_conns, 1);
 		return 1;
 
 	case SRV_STATUS_NOSRV:
@@ -1668,7 +1669,7 @@
 			s->si[1].err_type = SI_ET_CONN_ERR;
 		}
 
-		HA_ATOMIC_ADD(&s->be->be_counters.failed_conns, 1);
+		_HA_ATOMIC_ADD(&s->be->be_counters.failed_conns, 1);
 		return 1;
 
 	case SRV_STATUS_QUEUED:
@@ -1688,8 +1689,8 @@
 		if (srv)
 			srv_set_sess_last(srv);
 		if (srv)
-			HA_ATOMIC_ADD(&srv->counters.failed_conns, 1);
-		HA_ATOMIC_ADD(&s->be->be_counters.failed_conns, 1);
+			_HA_ATOMIC_ADD(&srv->counters.failed_conns, 1);
+		_HA_ATOMIC_ADD(&s->be->be_counters.failed_conns, 1);
 
 		/* release other streams waiting for this server */
 		if (may_dequeue_tasks(srv, s->be))
@@ -1708,7 +1709,7 @@
 void set_backend_down(struct proxy *be)
 {
 	be->last_change = now.tv_sec;
-	HA_ATOMIC_ADD(&be->down_trans, 1);
+	_HA_ATOMIC_ADD(&be->down_trans, 1);
 
 	if (!(global.mode & MODE_STARTING)) {
 		ha_alert("%s '%s' has no server available!\n", proxy_type_str(be), be->id);