]> granicus.if.org Git - postgresql/commitdiff
Don't fsync() files when --no-sync is specified
authorMagnus Hagander <magnus@hagander.net>
Tue, 25 Oct 2016 16:56:21 +0000 (18:56 +0200)
committerMagnus Hagander <magnus@hagander.net>
Tue, 25 Oct 2016 17:00:01 +0000 (19:00 +0200)
Michael Paquier

src/bin/pg_basebackup/walmethods.c

index b0b3d435c36d3191ba1c711176a5a15a8ddba752..632e095c4e83dbd3f56a9012e282761765dafdb8 100644 (file)
@@ -611,6 +611,9 @@ tar_sync(Walfile f)
        Assert(f != NULL);
        tar_clear_error();
 
+       if (!tar_data->sync)
+               return 0;
+
        /*
         * Always sync the whole tarfile, because that's all we can do. This makes
         * no sense on compressed files, so just ignore those.
@@ -842,7 +845,8 @@ tar_finish(void)
 #endif
 
        /* sync the empty blocks as well, since they're after the last file */
-       fsync(tar_data->fd);
+       if (tar_data->sync)
+               fsync(tar_data->fd);
 
        if (close(tar_data->fd) != 0)
                return false;