Re: Block-level CRC checks
От | marcin mank |
---|---|
Тема | Re: Block-level CRC checks |
Дата | |
Msg-id | b1b9fac60912010538w18fd2510s519d2bfd9353e83d@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Block-level CRC checks (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>) |
Ответы |
Re: Block-level CRC checks
|
Список | pgsql-hackers |
On Mon, Nov 30, 2009 at 9:27 PM, Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> wrote: > Simon Riggs wrote: >> Proposal >> >> * We reserve enough space on a disk block for a CRC check. When a dirty >> block is written to disk we calculate and annotate the CRC value, though >> this is *not* WAL logged. > > Imagine this: > 1. A hint bit is set. It is not WAL-logged, but the page is dirtied. > 2. The buffer is flushed out of the buffer cache to the OS. A new CRC is > calculated and stored on the page. > 3. Half of the page is flushed to disk (aka torn page problem). The CRC > made it to disk but the flipped hint bit didn't. > > You now have a page with incorrect CRC on disk. > What if we treated the hint bits as all-zeros for the purpose of CRC calculation? This would exclude them from the checksum. Greetings Marcin Mańk
В списке pgsql-hackers по дате отправления: