pgsql: Clean up WAL/buffer interactions as per my recent proposal.

Поиск
Список
Период
Сортировка
От tgl@postgresql.org (Tom Lane)
Тема pgsql: Clean up WAL/buffer interactions as per my recent proposal.
Дата
Msg-id 20060331233207.BAD3C11F6208@postgresql.org
обсуждение исходный текст
Список pgsql-committers
Log Message:
-----------
Clean up WAL/buffer interactions as per my recent proposal.  Get rid of the
misleadingly-named WriteBuffer routine, and instead require routines that
change buffer pages to call MarkBufferDirty (which does exactly what it says).
We also require that they do so before calling XLogInsert; this takes care of
the synchronization requirement documented in SyncOneBuffer.  Note that
because bufmgr takes the buffer content lock (in shared mode) while writing
out any buffer, it doesn't matter whether MarkBufferDirty is executed before
the buffer content change is complete, so long as the content change is
completed before releasing exclusive lock on the buffer.  So it's OK to set
the dirtybit before we fill in the LSN.
This eliminates the former kluge of needing to set the dirtybit in LockBuffer.
Aside from making the code more transparent, we can also add some new
debugging assertions, in particular that the caller of MarkBufferDirty must
hold the buffer content lock, not merely a pin.

Modified Files:
--------------
    pgsql/src/backend/access/gist:
        gist.c (r1.130 -> r1.131)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gist.c.diff?r1=1.130&r2=1.131)
        gistvacuum.c (r1.17 -> r1.18)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistvacuum.c.diff?r1=1.17&r2=1.18)
        gistxlog.c (r1.13 -> r1.14)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/gist/gistxlog.c.diff?r1=1.13&r2=1.14)
    pgsql/src/backend/access/hash:
        hashovfl.c (r1.51 -> r1.52)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/hash/hashovfl.c.diff?r1=1.51&r2=1.52)
        hashpage.c (r1.56 -> r1.57)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/hash/hashpage.c.diff?r1=1.56&r2=1.57)
    pgsql/src/backend/access/heap:
        heapam.c (r1.210 -> r1.211)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/heap/heapam.c.diff?r1=1.210&r2=1.211)
    pgsql/src/backend/access/nbtree:
        nbtinsert.c (r1.133 -> r1.134)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtinsert.c.diff?r1=1.133&r2=1.134)
        nbtpage.c (r1.93 -> r1.94)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtpage.c.diff?r1=1.93&r2=1.94)
        nbtree.c (r1.142 -> r1.143)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtree.c.diff?r1=1.142&r2=1.143)
        nbtxlog.c (r1.29 -> r1.30)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/nbtree/nbtxlog.c.diff?r1=1.29&r2=1.30)
    pgsql/src/backend/access/transam:
        README (r1.4 -> r1.5)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/README.diff?r1=1.4&r2=1.5)
        xlog.c (r1.230 -> r1.231)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xlog.c.diff?r1=1.230&r2=1.231)
        xlogutils.c (r1.42 -> r1.43)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xlogutils.c.diff?r1=1.42&r2=1.43)
    pgsql/src/backend/catalog:
        index.c (r1.264 -> r1.265)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/index.c.diff?r1=1.264&r2=1.265)
    pgsql/src/backend/commands:
        sequence.c (r1.131 -> r1.132)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/sequence.c.diff?r1=1.131&r2=1.132)
        vacuum.c (r1.325 -> r1.326)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuum.c.diff?r1=1.325&r2=1.326)
        vacuumlazy.c (r1.68 -> r1.69)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuumlazy.c.diff?r1=1.68&r2=1.69)
    pgsql/src/backend/storage/buffer:
        README (r1.8 -> r1.9)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/README.diff?r1=1.8&r2=1.9)
        bufmgr.c (r1.205 -> r1.206)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/bufmgr.c.diff?r1=1.205&r2=1.206)
        localbuf.c (r1.73 -> r1.74)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/localbuf.c.diff?r1=1.73&r2=1.74)
    pgsql/src/include/access:
        hash.h (r1.67 -> r1.68)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/hash.h.diff?r1=1.67&r2=1.68)
        nbtree.h (r1.93 -> r1.94)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/nbtree.h.diff?r1=1.93&r2=1.94)
    pgsql/src/include/storage:
        buf_internals.h (r1.85 -> r1.86)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/buf_internals.h.diff?r1=1.85&r2=1.86)
        bufmgr.h (r1.99 -> r1.100)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/bufmgr.h.diff?r1=1.99&r2=1.100)

В списке pgsql-committers по дате отправления:

Предыдущее
От: ksrikanth@pgfoundry.org (User Ksrikanth)
Дата:
Сообщение: bizgres - bizgres: Introduce patch Release-0_9_GA
Следующее
От: nwakefield@pgfoundry.org (User Nwakefield)
Дата:
Сообщение: bizgres - bizgres: Parameter inheritance was inconsistent across job