if (ret != 0 && errno != ENOENT)
        ereport(ERROR,
-               (errmsg("could not stat file \"%s\": %m", path)));
+               (errcode_for_file_access(),
+                errmsg("could not stat file \"%s\": %m", path)));
 
    else if (ret == 0)
    {
    if (unlink(tmppath) != 0 && errno != ENOENT)
        ereport(ERROR,
                (errcode_for_file_access(),
-                errmsg("could not remove file \"%s\": %m", path)));
+                errmsg("could not remove file \"%s\": %m", tmppath)));
 
    needed_length = sizeof(SnapBuildOnDisk) +
        sizeof(TransactionId) * builder->committed.xcnt;
                           O_CREAT | O_EXCL | O_WRONLY | PG_BINARY);
    if (fd < 0)
        ereport(ERROR,
-               (errmsg("could not open file \"%s\": %m", path)));
+               (errcode_for_file_access(),
+                errmsg("could not open file \"%s\": %m", tmppath)));
 
    errno = 0;
    pgstat_report_wait_start(WAIT_EVENT_SNAPBUILD_WRITE);
 
    if (ondisk.magic != SNAPBUILD_MAGIC)
        ereport(ERROR,
-               (errmsg("snapbuild state file \"%s\" has wrong magic number: %u instead of %u",
+               (errcode(ERRCODE_DATA_CORRUPTED),
+                errmsg("snapbuild state file \"%s\" has wrong magic number: %u instead of %u",
                        path, ondisk.magic, SNAPBUILD_MAGIC)));
 
    if (ondisk.version != SNAPBUILD_VERSION)
        ereport(ERROR,
-               (errmsg("snapbuild state file \"%s\" has unsupported version: %u instead of %u",
+               (errcode(ERRCODE_DATA_CORRUPTED),
+                errmsg("snapbuild state file \"%s\" has unsupported version: %u instead of %u",
                        path, ondisk.version, SNAPBUILD_VERSION)));
 
    INIT_CRC32C(checksum);
    /* verify checksum of what we've read */
    if (!EQ_CRC32C(checksum, ondisk.checksum))
        ereport(ERROR,
-               (errcode_for_file_access(),
+               (errcode(ERRCODE_DATA_CORRUPTED),
                 errmsg("checksum mismatch for snapbuild state file \"%s\": is %u, should be %u",
                        path, checksum, ondisk.checksum)));