diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 8778401665c31d016ce96e594aca6fbfb8d1624c..6993dcdba6f1ad6dd466675b96fd7e5bfe459c4b 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -3978,6 +3978,7 @@ static noinline int log_dir_items(struct btrfs_trans_handle *trans,
 			goto done;
 		}
 		if (btrfs_header_generation(path->nodes[0]) != trans->transid) {
+			ctx->last_dir_item_offset = min_key.offset;
 			ret = overwrite_item(trans, log, dst_path,
 					     path->nodes[0], path->slots[0],
 					     &min_key);