Re: Offline enabling/disabling of data checksums
Michael Banck <michael.banck@credativ.de>
From: Michael Banck <michael.banck@credativ.de>
To: Fabien COELHO <coelho@cri.ensmp.fr>
Cc: Postgres hackers <pgsql-hackers@postgresql.org>, Michael Paquier <michael@paquier.xyz>
Date: 2019-01-08T12:03:25Z
Lists: pgsql-hackers
Attachments
- offline-activation-of-checksums_V2.patch (text/x-patch) patch
Hi, Am Mittwoch, den 26.12.2018, 19:43 +0100 schrieb Fabien COELHO: > > It adds an (now mandatory) --action parameter that takes either verify, > > enable or disable as argument. > > I'd rather have explicit switches for verify, enable & disable, and verify > would be the default if none is provided. I changed that to the switches -c/--verify (-c for check as -v is taken, should it be --check as well? I personally like verify better), -d/--disable and -e/--enable. > About the patch: applies, compiles, "make check" ok. > > There is no documentation. Yeah, I'll write that once the CLI is settled. > In "scan_file", I would open RW only for enable, but keep RO for verify. OK, I've changed that. > Also, the full page is rewritten... would it make sense to only overwrite > the checksum part itself? So just writing the page header? I find that a bit scary and don't expect much speedup as the OS would write the whole block anyway I guess? I haven't touched that yet. > It seems that the control file is unlinked and then rewritten. If the > rewritting fails, or the command is interrupted, the user has a problem. > > Could the control file be simply opened RW? Else, I would suggest to > rename (eg add .tmp), write the new one, then unlink the old one, so that > recovering the old state in case of problem is possible. I have mostly taken the pg_rewind code here; if there was a function that allowed for safe offline changes of the control file, I'd be happy to use it but I don't think it should be this patch to invent that. In any case, I have removed the unlink() now (not sure where that came from), and changed it to open(O_WRONLY) same as in Michael's code and pg_rewind. V2 attached. Michael -- Michael Banck Projektleiter / Senior Berater Tel.: +49 2166 9901-171 Fax: +49 2166 9901-100 Email: michael.banck@credativ.de credativ GmbH, HRB Mönchengladbach 12080 USt-ID-Nummer: DE204566209 Trompeterallee 108, 41189 Mönchengladbach Geschäftsführung: Dr. Michael Meskes, Jörg Folz, Sascha Heuer Unser Umgang mit personenbezogenen Daten unterliegt folgenden Bestimmungen: https://www.credativ.de/datenschutz
Commits
-
Reorganize Notes section in documentation of pg_checksums
- a7cc52370b2b 12.0 landed
-
Add option -N/--no-sync to pg_checksums
- e0090c869008 12.0 landed
-
Add options to enable and disable checksums in pg_checksums
- ed308d783790 12.0 landed
-
Refactor more code logic to update the control file
- 8b938d36f744 12.0 landed
-
Rename pg_verify_checksums to pg_checksums
- 6dd263cfaa84 12.0 landed
-
Fix cross-version compatibility checks of pg_verify_checksums
- 501f58359b59 11.3 landed
- c9ae7f704c67 12.0 landed
-
Add routine able to update the control file to src/common/
- ce6afc6823fb 12.0 landed