Re: Move PinBuffer and UnpinBuffer to atomics
От | Dilip Kumar |
---|---|
Тема | Re: Move PinBuffer and UnpinBuffer to atomics |
Дата | |
Msg-id | CAFiTN-skAMbHyXGYt+moeFSN4iOW5r+D30Hgetfn5C3262WP0g@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Move PinBuffer and UnpinBuffer to atomics (Dilip Kumar <dilipbalaut@gmail.com>) |
Ответы |
Re: Move PinBuffer and UnpinBuffer to atomics
Document "59.2. Built-in Operator Classes" have a clerical error? |
Список | pgsql-hackers |
On Tue, Mar 22, 2016 at 12:31 PM, Dilip Kumar <dilipbalaut@gmail.com> wrote:
! pg_atomic_write_u32(&bufHdr->state, state);} while (!StartBufferIO(bufHdr, true));Better Write some comment, about we clearing the BM_LOCKED from stage directly and need not to call UnlockBufHdr explicitly.otherwise its confusing.
Few more comments..
*** 828,837 ****
*/
do
{
! LockBufHdr(bufHdr);
! Assert(bufHdr->flags & BM_VALID);
! bufHdr->flags &= ~BM_VALID;
! UnlockBufHdr(bufHdr);
} while (!StartBufferIO(bufHdr, true));
}
}
--- 826,834 ----
*/
do
{
! uint32 state = LockBufHdr(bufHdr);
! state &= ~(BM_VALID | BM_LOCKED);
! pg_atomic_write_u32(&bufHdr->state, state);
} while (!StartBufferIO(bufHdr, true));
1. Previously there was a Assert, any reason why we removed it ?
Assert(bufHdr->flags & BM_VALID);
2. And also if we don't need assert then can't we directly clear BM_VALID flag from state variable (if not locked) like pin/unpin buffer does, without taking buffer header lock?
В списке pgsql-hackers по дате отправления: