added torn page figure

This commit is contained in:
Sears Russell 2006-09-02 22:38:58 +00:00
parent 967caf1ee7
commit 3122750c10
2 changed files with 24 additions and 18 deletions

View file

@ -606,6 +606,8 @@ recovery-specific code in the system.
\caption{\sf\label{fig:structure} The portions of \yad that directly interact with new operations.} \caption{\sf\label{fig:structure} The portions of \yad that directly interact with new operations.}
\end{figure} \end{figure}
The first step in implementing a new operation is to decide upon an The first step in implementing a new operation is to decide upon an
external interface, which is typically cleaner than directly calling {\tt Tupdate()} to invoke the redo/undo operations. external interface, which is typically cleaner than directly calling {\tt Tupdate()} to invoke the redo/undo operations.
The externally visible interface is implemented The externally visible interface is implemented
@ -964,31 +966,35 @@ operations performed by redo are blind updates, they can be applied
regardless of whether the initial page was the correct version or even regardless of whether the initial page was the correct version or even
logically consistent. logically consistent.
\begin{figure}
\includegraphics[%
bb=0bp 0bp 445bp 275bp,
clip,
width=1\columnwidth]{figs/torn-page.pdf}
\caption{\sf\label{fig:torn}Torn pages and LSN-free recovery.
The page is torn during the crash, but consistent once redo completes.
Overwritten and stale torn sectors are shaded.}
\end{figure}
\eat{ Figure~\ref{fig:todo} provides an example page, and a number of \rcs{Next 3 paragraphs are new; check flow, etc}
log entries that were applied to it. Assume that the initial version Figure~\ref{fig:torn} describes a page that is torn during crash, and the actions performed by redo that repair it. Assume that the initial version
of the page, with LSN $0$, is on disk, and the disk is in the process of the page, with LSN $0$, is on disk, and the disk is in the process
of writing out the version with LSN $2$ when the system crashes. When of writing out the version with LSN $2$ when the system crashes. When
recovery reads the page from disk, it may encounter any combination of recovery reads the page from disk, it may encounter any combination of
sectors from these two versions. sectors from these two versions.
Note that the first and last two sectors are not overwritten by any Note that the first and last two sectors are not overwritten by any of
of the log entries that Redo will play back. Therefore, their value the log entries that Redo will play back. Therefore, their values are
is unchanged in both versions of the page. Since Redo will not change unchanged in both versions of the page. In the example, two of these
them, we know that they will have the correct value when it completes. sectors are overwritten during the crash, while the shaded one is left
The remainder of the sectors are overwritten at some point in the log. over from the old version of the page.
If we constrain the updates to overwrite an entire sector at once, then
the initial on-disk value of these sectors would not have any affect
on the outcome of Redo. Furthermore, since the redo entries are
played back in order, each sector would contain the most up to date
version after redo.
Of course, we do not want to constrain log entries to update entire Redoing LSN 1 is unnecessary, since all of its sectors happened to
sectors at once. In order to support finer-grained logging, we simply make it to disk. However, recovery has no way of knowing this and
repeat the above argument on the byte or bit level. Each bit is applies the entry to the page, replacing a up-to-date sector with a
either overwritten by redo, or has a known, correct, value before stale one. When LSN 2 is applied, it brings this sector up to date,
redo. and also overwrites one of the two sectors that did not make it to
} disk. At this point, the page is internally consistent.
Since LSN-free recovery only relies upon atomic updates at the bit Since LSN-free recovery only relies upon atomic updates at the bit
level, it decouples page boundaries from atomicity and recovery. This level, it decouples page boundaries from atomicity and recovery. This

BIN
doc/paper3/figs/torn-page.pdf Executable file

Binary file not shown.