diff --git a/configure.ac b/configure.ac
index 89a5317..6adbee8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -238,6 +238,7 @@
 AC_CHECK_SIZEOF([char *])
 AC_TYPE_UMODE_T
 AC_MANUAL_FORMAT
+AC_HAVE_LIBURCU_ATOMIC64
 
 AC_CONFIG_FILES([include/builddefs])
 AC_OUTPUT
diff --git a/include/atomic.h b/include/atomic.h
index 2804815..79e58df 100644
--- a/include/atomic.h
+++ b/include/atomic.h
@@ -60,11 +60,57 @@
 	return 0;
 }
 
+#ifdef HAVE_LIBURCU_ATOMIC64
+/*
+ * On most (64-bit) platforms, liburcu can handle 64-bit atomic counter
+ * updates, so we preferentially use that.
+ */
 #define atomic64_read(a)	uatomic_read(a)
 #define atomic64_set(a, v)	uatomic_set(a, v)
 #define atomic64_add(v, a)	uatomic_add(a, v)
 #define atomic64_sub(v, a)	uatomic_sub(a, v)
 #define atomic64_inc(a)		uatomic_inc(a)
 #define atomic64_dec(a)		uatomic_dec(a)
+#else
+/*
+ * If we don't detect support for that, emulate it with a lock.  Currently
+ * there are only three atomic64_t counters in userspace and none of them are
+ * performance critical, so we serialize them all with a single mutex since
+ * the kernel atomic64_t API doesn't have an _init call.
+ */
+extern pthread_mutex_t	atomic64_lock;
+
+static inline int64_t
+atomic64_read(atomic64_t *a)
+{
+	int64_t	ret;
+
+	pthread_mutex_lock(&atomic64_lock);
+	ret = *a;
+	pthread_mutex_unlock(&atomic64_lock);
+	return ret;
+}
+
+static inline void
+atomic64_add(int v, atomic64_t *a)
+{
+	pthread_mutex_lock(&atomic64_lock);
+	(*a) += v;
+	pthread_mutex_unlock(&atomic64_lock);
+}
+
+static inline void
+atomic64_set(atomic64_t *a, int64_t v)
+{
+	pthread_mutex_lock(&atomic64_lock);
+	(*a) = v;
+	pthread_mutex_unlock(&atomic64_lock);
+}
+
+#define atomic64_inc(a)		atomic64_add(1, (a))
+#define atomic64_dec(a)		atomic64_add(-1, (a))
+#define atomic64_sub(v, a)	atomic64_add(-(v), (a))
+
+#endif /* HAVE_URCU_ATOMIC64 */
 
 #endif /* __ATOMIC_H__ */
diff --git a/include/builddefs.in b/include/builddefs.in
index 78eddf4..9d0b080 100644
--- a/include/builddefs.in
+++ b/include/builddefs.in
@@ -122,6 +122,7 @@
 SYSTEMD_SYSTEM_UNIT_DIR = @systemd_system_unit_dir@
 HAVE_CROND = @have_crond@
 CROND_DIR = @crond_dir@
+HAVE_LIBURCU_ATOMIC64 = @have_liburcu_atomic64@
 
 GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall
 #	   -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-decl
@@ -159,6 +160,9 @@
 
 LIBICU_LIBS = @libicu_LIBS@
 LIBICU_CFLAGS = @libicu_CFLAGS@
+ifeq ($(HAVE_LIBURCU_ATOMIC64),yes)
+PCFLAGS += -DHAVE_LIBURCU_ATOMIC64
+endif
 
 SANITIZER_CFLAGS += @addrsan_cflags@ @threadsan_cflags@ @ubsan_cflags@
 SANITIZER_LDFLAGS += @addrsan_ldflags@ @threadsan_ldflags@ @ubsan_ldflags@
diff --git a/include/libxlog.h b/include/libxlog.h
index adaa996..3ade7ff 100644
--- a/include/libxlog.h
+++ b/include/libxlog.h
@@ -11,8 +11,8 @@
  * the need to define any exotic kernel types in userland.
  */
 struct xlog {
-	xfs_lsn_t	l_tail_lsn;     /* lsn of 1st LR w/ unflush buffers */
-	xfs_lsn_t	l_last_sync_lsn;/* lsn of last LR on disk */
+	atomic64_t	l_tail_lsn;     /* lsn of 1st LR w/ unflush buffers */
+	atomic64_t	l_last_sync_lsn;/* lsn of last LR on disk */
 	xfs_mount_t	*l_mp;	        /* mount point */
 	struct xfs_buftarg *l_dev;	        /* dev_t of log */
 	xfs_daddr_t	l_logBBstart;   /* start block of log */
diff --git a/libxfs/init.c b/libxfs/init.c
index 0f7e895..75ff4d4 100644
--- a/libxfs/init.c
+++ b/libxfs/init.c
@@ -25,6 +25,10 @@
 
 #include "libxfs.h"		/* for now */
 
+#ifndef HAVE_LIBURCU_ATOMIC64
+pthread_mutex_t	atomic64_lock = PTHREAD_MUTEX_INITIALIZER;
+#endif
+
 char *progname = "libxfs";	/* default, changed by each tool */
 
 struct cache *libxfs_bcache;	/* global buffer cache */
diff --git a/m4/package_urcu.m4 b/m4/package_urcu.m4
index f0337f3..f8e798b 100644
--- a/m4/package_urcu.m4
+++ b/m4/package_urcu.m4
@@ -20,3 +20,22 @@
        AC_MSG_RESULT(no))
     AC_SUBST(liburcu)
   ])
+
+#
+# Make sure that calling uatomic_inc on a 64-bit integer doesn't cause a link
+# error on _uatomic_link_error, which is how liburcu signals that it doesn't
+# support atomic operations on 64-bit data types.
+#
+AC_DEFUN([AC_HAVE_LIBURCU_ATOMIC64],
+  [ AC_MSG_CHECKING([for atomic64_t support in liburcu])
+    AC_TRY_LINK([
+#define _GNU_SOURCE
+#include <urcu.h>
+    ], [
+       long long f = 3;
+       uatomic_inc(&f);
+    ], have_liburcu_atomic64=yes
+       AC_MSG_RESULT(yes),
+       AC_MSG_RESULT(no))
+    AC_SUBST(have_liburcu_atomic64)
+  ])
diff --git a/repair/phase2.c b/repair/phase2.c
index cb9adf1..32ffe18 100644
--- a/repair/phase2.c
+++ b/repair/phase2.c
@@ -128,7 +128,7 @@
 	 * is a v5 filesystem.
 	 */
 	if (xfs_sb_version_hascrc(&mp->m_sb))
-		libxfs_max_lsn = log->l_last_sync_lsn;
+		libxfs_max_lsn = atomic64_read(&log->l_last_sync_lsn);
 }
 
 static bool
