r4483 - in developers/werner: . nandpart

werner at docs.openmoko.org werner at docs.openmoko.org
Wed Jun 11 01:55:42 CEST 2008


Author: werner
Date: 2008-06-11 01:55:41 +0200 (Wed, 11 Jun 2008)
New Revision: 4483

Added:
   developers/werner/nandpart/
   developers/werner/nandpart/Makefile
   developers/werner/nandpart/bb_slack.pl
   developers/werner/nandpart/dynpart.fig
   developers/werner/nandpart/nand3d.fig
   developers/werner/nandpart/nandpart.tex
   developers/werner/nandpart/rlatex
   developers/werner/nandpart/slackpart.fig
Log:
Document describing old and new NAND partitioning scheme. (Work in progress.)



Added: developers/werner/nandpart/Makefile
===================================================================
--- developers/werner/nandpart/Makefile	                        (rev 0)
+++ developers/werner/nandpart/Makefile	2008-06-10 23:55:41 UTC (rev 4483)
@@ -0,0 +1,88 @@
+#
+# Fairly generic script for paper processing
+#
+
+VERSION=0
+NAME=nandpart
+
+# --- End of user-specific settings -------------------------------------------
+
+
+INC=slack.inc
+WORDS=my.words
+FIGS=nand3d dynpart slackpart
+
+EPS=$(FIGS:=.eps)
+
+
+.SUFFIXES:      .fig .eps .dvi .tex .ps .pdf
+
+.PHONY:		all spell .personal
+
+all:		$(NAME).ps # $(NAME).pdf
+
+$(NAME).dvi:	$(EPS) $(NAME).tex $(INC) # bib.inc
+
+slack.inc:	bb_slack.pl
+		./bb_slack.pl 3 20 >slack.inc || { rm -f slack.inc; exit 1; }
+
+
+# --- Spell checking ----------------------------------------------------------
+
+
+#
+# Modern aspell doesn't support personal dictionaries anymore, so we use ispell
+# instead. If we have an old installation, with a correctly working aspell, but
+# a broken ispell-to-aspell wrapper script, we anti-wrap in our own aspell
+# script.
+#
+
+spell:		.personal
+		-cat $(INC) $(addsuffix .fig,$(FIGS)) >.tmp
+		PATH=.:$$PATH ispell -t -p ./.personal .tmp
+		rm -f .tmp
+
+.personal:	$(WORDS)
+		cat $(WORDS) >.personal || { rm -f .personal; exit 1; }
+
+# modern aspell is broken ?!?
+#		rm -f .personal
+#		cat $(WORDS) | aspell create personal ./.personal || \
+#		  { rm -f .personal; exit 1; }
+
+
+# --- Conversion rules --------------------------------------------------------
+
+
+.dvi.ps:
+		dvips -o - $< | \
+		  sed '/%%BeginDocument/,/%%EndDocument/s/%%.*//' >$@ || \
+		  { rm -f $@; exit 1; }
+
+#.dvi.pdf:
+#		dvipdf -o $@ $< || { rm -f $@; exit 1; }
+
+.ps.pdf:
+		ps2pdf $< $@
+
+.tex.dvi:
+		./rlatex $<
+
+.fig.eps:
+		fig2dev -L eps -m 0.833 $< $@
+
+
+# --- Bibliography ------------------------------------------------------------
+
+
+bib.inc:	$(INC) BIBLIOGRAPHY
+		BIBPATH=. perl bibfile.pl kboot.tex >bib.inc || \
+		  { rm -f bib.inc; false; }
+
+
+# --- Cleanup -----------------------------------------------------------------
+
+
+clean:
+		rm -f *.dvi *.eps *.pdf *.ps *.aux *.log
+		rm -f .personal .tmp .personal_tmp

Added: developers/werner/nandpart/bb_slack.pl
===================================================================
--- developers/werner/nandpart/bb_slack.pl	                        (rev 0)
+++ developers/werner/nandpart/bb_slack.pl	2008-06-10 23:55:41 UTC (rev 4483)
@@ -0,0 +1,84 @@
+#!/usr/bin/perl
+
+#
+# usage: bb_slack.pl #slack [end_#slack]
+#
+
+#
+# n = minimum number of good blocks needed
+# b = probability that block is bad
+# s = slack
+# p = probability that slack is sufficient
+# 
+#       s     ( n+s )
+# p =  sum    (     ) * b^i*(1-b)^(n+s-i)
+#     i = 0   (  i  )
+#
+# Note: this assumes that bad blocks are evenly distributed and don't come in
+# clumps.
+#
+
+$b = 40/2047;	# Samsung K5D2G13ACM-D075
+		# (only 2047, since first block is always good)
+
+sub binom
+{
+    local ($n, $k) = @_;
+    local ($b, $i);
+
+    $b = 1;
+    for ($i = $n-$k+1; $i <= $n; $i++) {
+	$b *= $i;
+    }
+    for ($i = 2; $i <= $k; $i++) {
+	$b /= $i;
+    }
+    return $b;
+}
+
+
+sub exp
+{
+    local ($b, $e) = @_;
+
+    return exp(log($b)*$e);
+}
+
+
+sub p_good
+{
+    local ($s) = @_;
+    local ($p, $i);
+
+    $p = 0;
+    for ($i = 0; $i <= $s; $i++) {
+	$p += &binom($n+$s, $i)*&exp($b, $i)*&exp(1-$b, $n+$s-$i);
+    }
+    return $p;
+}
+
+$s0 = $ARGV[0];
+$s1 = defined $ARGV[1] ? $ARGV[1] : $s0;
+
+for ($s = $s0; $s <= $s1; $s++) {
+	$n6 = $n9 = 0;
+
+	$e6 = $e9 = 1;
+	for ($n = $s; $e6 || $e9; $n++) {
+		$p = 1-&p_good($s);
+		if ($p <= 1e-6) {
+			$n6 = $n;
+		}
+		else {
+			$e6 = 0;
+		}
+		if ($p <= 1e-9) {
+			$n9 = $n;
+		}
+		else {
+			$e9 = 0;
+		}
+	}
+
+	print "$s & $n6 & $n9 \\\\\n";
+}


Property changes on: developers/werner/nandpart/bb_slack.pl
___________________________________________________________________
Name: svn:executable
   + *

Added: developers/werner/nandpart/dynpart.fig
===================================================================
--- developers/werner/nandpart/dynpart.fig	                        (rev 0)
+++ developers/werner/nandpart/dynpart.fig	2008-06-10 23:55:41 UTC (rev 4483)
@@ -0,0 +1,99 @@
+#FIG 3.2  Produced by xfig version 3.2.5
+Landscape
+Center
+Inches
+A4      
+100.00
+Single
+-2
+1200 2
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 4
+	 11100 5100 2100 5100 2100 4500 11100 4500
+2 1 1 2 0 7 40 -1 -1 6.000 0 0 -1 0 0 2
+	 11700 4500 11100 4500
+2 1 1 2 0 7 40 -1 -1 6.000 0 0 -1 0 0 2
+	 11700 5100 11100 5100
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 2250 4500 2400 4500 2400 5100 2250 5100 2250 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 2550 4500 2700 4500 2700 5100 2550 5100 2550 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 2850 4500 3000 4500 3000 5100 2850 5100 2850 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 3150 4500 3300 4500 3300 5100 3150 5100 3150 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 3450 4500 3600 4500 3600 5100 3450 5100 3450 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 3750 4500 3900 4500 3900 5100 3750 5100 3750 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 4050 4500 4200 4500 4200 5100 4050 5100 4050 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 4350 4500 4500 4500 4500 5100 4350 5100 4350 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 4650 4500 4800 4500 4800 5100 4650 5100 4650 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 4950 4500 5100 4500 5100 5100 4950 5100 4950 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 5250 4500 5400 4500 5400 5100 5250 5100 5250 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 5550 4500 5700 4500 5700 5100 5550 5100 5550 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 6150 4500 6300 4500 6300 5100 6150 5100 6150 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 6450 4500 6600 4500 6600 5100 6450 5100 6450 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 6750 4500 6900 4500 6900 5100 6750 5100 6750 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 7050 4500 7200 4500 7200 5100 7050 5100 7050 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 7350 4500 7500 4500 7500 5100 7350 5100 7350 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 7650 4500 7800 4500 7800 5100 7650 5100 7650 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 7950 4500 8100 4500 8100 5100 7950 5100 7950 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 8250 4500 8400 4500 8400 5100 8250 5100 8250 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 8550 4500 8700 4500 8700 5100 8550 5100 8550 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 8850 4500 9000 4500 9000 5100 8850 5100 8850 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 9150 4500 9300 4500 9300 5100 9150 5100 9150 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 9450 4500 9600 4500 9600 5100 9450 5100 9450 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 9750 4500 9900 4500 9900 5100 9750 5100 9750 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 10050 4500 10200 4500 10200 5100 10050 5100 10050 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 10350 4500 10500 4500 10500 5100 10350 5100 10350 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 10650 4500 10800 4500 10800 5100 10650 5100 10650 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 10950 4500 11100 4500 11100 5100 10950 5100 10950 4500
+2 2 0 0 0 7 50 -1 10 0.000 0 0 -1 0 0 5
+	 5850 4500 6000 4500 6000 5100 5850 5100 5850 4500
+2 2 0 0 0 7 50 -1 10 0.000 0 0 -1 0 0 5
+	 6900 4500 7050 4500 7050 5100 6900 5100 6900 4500
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 5100 4500 5100 5100
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 8400 4500 8400 5100
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 2100 3900 2100 4350
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 5100 3900 5100 4350
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 8400 3900 8400 4350
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
+	1 1 2.00 90.00 90.00
+	1 1 2.00 90.00 90.00
+	 2175 4050 5025 4050
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
+	1 1 2.00 90.00 90.00
+	1 1 2.00 90.00 90.00
+	 5175 4050 8325 4050
+4 1 0 50 -1 18 12 0.0000 4 210 1800 3600 5475 20 "good" blocks\001
+4 1 0 50 -1 18 12 0.0000 4 210 1800 6825 5475 20 "good" blocks\001
+4 1 0 50 -1 18 12 0.0000 4 165 990 3600 3900 20 blocks\001
+4 1 0 50 -1 18 12 0.0000 4 210 1770 6600 3900 22 blocks (2 bad)\001

Added: developers/werner/nandpart/nand3d.fig
===================================================================
--- developers/werner/nandpart/nand3d.fig	                        (rev 0)
+++ developers/werner/nandpart/nand3d.fig	2008-06-10 23:55:41 UTC (rev 4483)
@@ -0,0 +1,304 @@
+#FIG 3.2  Produced by xfig version 3.2.5
+Landscape
+Center
+Inches
+A4      
+100.00
+Single
+-2
+1200 2
+6 8460 3660 11700 3780
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 8520 3720 9240 3720
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11640 3720 10440 3720
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 9240 3720 10440 3720
+-6
+6 8340 3780 11580 3900
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 8400 3840 9120 3840
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11520 3840 10320 3840
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 9120 3840 10320 3840
+-6
+6 8220 3900 11460 4020
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 8280 3960 9000 3960
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11400 3960 10200 3960
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 9000 3960 10200 3960
+-6
+6 7380 4740 10620 4860
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7440 4800 8160 4800
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10560 4800 9360 4800
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 8160 4800 9360 4800
+-6
+6 7260 4860 10500 4980
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7320 4920 8040 4920
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10440 4920 9240 4920
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 8040 4920 9240 4920
+-6
+6 7500 4620 10740 4740
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7560 4680 8280 4680
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10680 4680 9480 4680
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 8280 4680 9480 4680
+-6
+6 7140 5100 10380 5220
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 5160 7920 5160
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5160 9120 5160
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 5160 9120 5160
+-6
+6 7140 5220 10380 5340
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 5280 7920 5280
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5280 9120 5280
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 5280 9120 5280
+-6
+6 7140 5340 10380 5460
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 5400 7920 5400
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5400 9120 5400
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 5400 9120 5400
+-6
+6 7140 7020 10380 7140
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 7080 7920 7080
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 7080 9120 7080
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 7080 9120 7080
+-6
+6 7140 6900 10380 7020
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 6960 7920 6960
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 6960 9120 6960
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 6960 9120 6960
+-6
+6 7140 6780 10380 6900
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 6840 7920 6840
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 6840 9120 6840
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 6840 9120 6840
+-6
+6 10260 5460 11820 7020
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 6960 10800 6480
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11760 5520 11280 6000
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 6000 10800 6480
+-6
+6 10260 5340 11820 6900
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 6840 10800 6360
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11760 5400 11280 5880
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 5880 10800 6360
+-6
+6 10260 3900 11820 5460
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5400 10800 4920
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11760 3960 11280 4440
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 4440 10800 4920
+-6
+6 10260 3780 11820 5340
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5280 10800 4800
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11760 3840 11280 4320
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 4320 10800 4800
+-6
+6 10260 3660 11820 5220
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5160 10800 4680
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11760 3720 11280 4200
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 4200 10800 4680
+-6
+6 10260 5580 11820 7140
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 7080 10800 6600
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11760 5640 11280 6120
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 6120 10800 6600
+-6
+6 10260 5220 11820 6780
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 6720 10800 6240
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11760 5280 11280 5760
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 5760 10800 6240
+-6
+6 10260 4020 11820 5580
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5520 10800 5040
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11760 4080 11280 4560
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 4560 10800 5040
+-6
+6 7140 6660 10380 6780
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 6720 7920 6720
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 6720 9120 6720
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 6720 9120 6720
+-6
+6 7140 5460 10380 5580
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 5520 7920 5520
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5520 9120 5520
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 5520 9120 5520
+-6
+6 7620 4500 10860 4620
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7680 4560 8400 4560
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10800 4560 9600 4560
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 8400 4560 9600 4560
+-6
+6 8100 4020 11340 4140
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 8160 4080 8880 4080
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 4080 10080 4080
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 8880 4080 10080 4080
+-6
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
+	 7200 5520 7200 5040 7920 5040
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 5040 9120 5040
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 5520 7200 6720
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 3
+	 9120 5040 10320 5040 10320 5520
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5520 10320 6720
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 3
+	 7200 6720 7200 7200 7920 7200
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7920 7200 9120 7200
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 3
+	 9120 7200 10320 7200 10320 6720
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7200 5040 7680 4560
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 5040 10800 4560
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 7200 10800 6720
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 3
+	 8160 4080 8640 3600 9360 3600
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 3
+	 11280 6240 11760 5760 11760 5280
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 3
+	 11760 4080 11760 3600 10560 3600
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 4080 11760 3600
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 9360 3600 10560 3600
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 7680 4560 8160 4080
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10800 4560 11280 4080
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10800 6720 11280 6240
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11280 3600 10800 4080
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 4560 9840 5040
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 9840 5040 9840 5520
+2 1 0 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 9840 6720 9840 7200
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 9840 5520 9840 6720
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 10320 4560 10800 4080
+2 3 1 0 0 7 55 -1 19 2.000 0 0 -1 0 0 5
+	 7200 5040 8640 3600 11760 3600 10320 5040 7200 5040
+2 1 1 2 0 7 50 -1 -1 6.000 0 0 -1 0 0 2
+	 11760 5280 11760 4080
+2 3 0 0 0 7 55 -1 17 2.000 0 0 -1 0 0 5
+	 7200 5040 10320 5040 10320 7200 7200 7200 7200 5040
+2 3 0 0 0 7 55 -1 15 2.000 0 0 -1 0 0 5
+	 10320 5040 11760 3600 11760 5760 10320 7200 10320 5040
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 2
+	 8760 3480 9120 3120
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 2
+	 11400 3480 11760 3120
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 2
+	 11880 3480 12240 3120
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 2
+	 8520 3600 8040 3600
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 2
+	 7080 5040 6600 5040
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 1 1 2
+	1 1 2.00 90.00 90.00
+	1 1 2.00 90.00 90.00
+	 9060 3240 11580 3240
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 1 1 2
+	1 1 2.00 90.00 90.00
+	1 1 2.00 90.00 90.00
+	 11700 3240 12060 3240
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 1 1 2
+	1 1 2.00 90.00 90.00
+	1 1 2.00 90.00 90.00
+	 8100 3660 6780 4980
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 2
+	 7080 7200 6600 7200
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 1 1 2
+	1 1 2.00 90.00 90.00
+	1 1 2.00 90.00 90.00
+	 6780 5100 6780 7140
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 4
+	 9360 2880 9480 2760 12600 2760 12480 2880
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 4
+	 6240 5040 6060 5040 7500 3600 7680 3600
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 2
+	 10080 7260 10080 7620
+2 1 0 2 0 7 55 -1 -1 6.000 0 0 -1 0 0 2
+	 7799 7250 7363 7772
+4 1 0 55 -1 18 12 0.0000 4 165 450 12000 3120 64 B\001
+4 1 0 55 -1 18 12 0.7854 4 210 945 7320 4260 64 Pages\001
+4 1 0 55 -1 18 12 1.5708 4 165 1245 6660 6120 2048 Blocks\001
+4 1 0 55 -1 18 12 0.7854 4 165 765 6720 4260 1 Block\001
+4 1 0 55 -1 18 12 0.0000 4 210 705 10980 2640 1 Page\001
+4 1 0 55 -1 18 12 0.0000 4 210 1125 10500 3120 2048 Bytes\001
+4 1 0 55 -1 18 12 0.0000 4 210 1245 10080 7920 Spare bytes\001
+4 1 0 55 -1 18 12 0.0000 4 210 3030 10080 8160 (ECC, bad block marker, etc.)\001
+4 1 0 55 -1 18 12 0.0000 4 210 1110 7500 8040 Data bytes\001

Added: developers/werner/nandpart/nandpart.tex
===================================================================
--- developers/werner/nandpart/nandpart.tex	                        (rev 0)
+++ developers/werner/nandpart/nandpart.tex	2008-06-10 23:55:41 UTC (rev 4483)
@@ -0,0 +1,325 @@
+\documentclass{article}
+\usepackage[obeyspaces]{url}
+\usepackage{fullpage}
+\usepackage{epsfig}
+
+\title{Openmoko NAND Partitioning}
+\author{Werner Almesberger \\
+  \tt werner at openmoko.org}
+\date{June 10, 2008}
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+\noindent
+The Openmoko GTA01 and GTA02 models partition their NAND such that
+partitions grow according to the number of bad blocks they contain.
+This dynamic partitioning complicates production and use of the
+devices. We propose to use static partitions with extra blocks to
+provide a statistical guarantee that bad blocks can be accommodated.
+\end{abstract}
+
+% -----------------------------------------------------------------------------
+
+\section{Structure of a NAND Flash device}
+
+NAND devices are structured in block which in turn contain multiple
+pages. This is illustrated in figure \ref{nand3d}.
+For example, the Samsung K5D2G13ACM-D075 NAND Flash memory in
+the SC32442B54 multi-chip-package (MCP) used in GTA02, contains 2048
+blocks, each containing 64 pages. One page contains 2048 data bytes and
+64 ``spare'' bytes. The latter are used to store meta-data such as bad
+block markers and ECCs.
+
+\begin{figure}[ht]
+\begin{center}
+\includegraphics{nand3d.eps}
+\end{center}
+\caption{Structure of the Samsung K5D2G13ACM-D075 NAND Flash memory.}
+\label{nand3d}
+\end{figure}
+
+The content of each page is protected by an ECC, which can detect any
+single-bit and two-bit error, and correct any single-bit error.
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{Initial bad blocks}
+
+Due to the nature of their fabrication process, a NAND device leaves the
+factory with a certain number of defective memory cells that are not
+guaranteed to retain data for the specified amount of time (if at all).
+
+If a block contains one or more defective memory cells, the entire block
+is marked as ``bad'' by setting some of the ``spare'' bytes belonging to
+this block to a specific value.
+
+In the case of the K5D2G13ACM, Samsung guarantee that the first block is
+always ``good''\footnote{Samsung specify that the first block will not
+develop more than one bit error per page within the first 1000
+program/erase cycles. Such a single-bit error can be detected and
+corrected by the ECC.}, and furtermore that no more than 40 of the 2047
+remaining blocks of the device are invalid. This is shown in table
+\ref{badratio}.
+
+\begin{table}[ht]
+\begin{center}
+\begin{tabular}{|c|r|r|}
+  \hline
+  Block number & \multicolumn{1}{c|}{Number of blocks} &
+    \multicolumn{1}{c|}{Maximum ``bad''} \\
+  \hline
+  0		&    1 & 0 \\
+  1--2047	& 2047 & 40 \\
+  \hline
+\end{tabular}
+\end{center}
+\caption{When the NAND device leaves the factory, the first NAND block is
+   guaranteed to be ``good'', but several of the other blocks can be marked
+   as invalid and must not be used.}
+\label{badratio}
+\end{table}
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{Worn-out blocks}
+
+During use, memory cells of can also lose their content. In particular,
+after a certain the number of program/erase cycles, memory cells may
+no longer be able to retain their content.
+
+Samsung guarantee for the K5D2G13ACM that each block (except for the
+first one and any block that was already marked as invalid during
+production) can be programmed and erased at least 100'000 times before
+more than one bit per page fails. A single-bit failure can be detected and
+corrected by the ECC.
+
+There are various strategies for responding to ECC errors. For example,
+once can just correct them and take no further action, or one can
+correct the error, copy the data to a new block, mark the whole block
+or page as defective, and refrain from making any further use of it. 
+
+For the purpose of this paper, we only need to consider than blocks may
+become unusable after production, but are not concerned about what specific
+actions are taken when errors are detected.
+
+% -----------------------------------------------------------------------------
+
+\section{NAND partitions}
+
+NAND devices are usually partitioned. For example, the Openmoko GTA01
+has partitions for the u-boot boot loader, the persistent environment
+of u-boot, a splash screen image, the Linux kernel, and the root file
+system. The GTA02 adds another partition for factory data, such as MAC
+addresses.
+
+Partitions are made up of consecutive blocks and always end and begin
+at a block boundary.\footnote{The reason for this is that only whole
+NAND blocks can be erased. Thus, if blocks were to cross partition
+boundaries, a change to one partition could also affect a neighbouring
+partition, which is undesirable.}
+
+For each partition but the last one, the size of the content is specified
+and the partition must contain good blocks for at least that amount of data.
+The last partition is different in that is simply contains all the
+remaining blocks.
+
+The content size can be an exact value or an estimate of how much space
+once could reasonably expect to need for the respective partition.
+
+% -----------------------------------------------------------------------------
+
+\section{Dynamic partitions}
+
+
+At the time of writing, Openmoko uses the following strategy to
+@@@
+
+\begin{figure}[ht]
+\begin{center}
+\includegraphics{dynpart.eps}
+\end{center}
+\caption{Dynamic sizing of partitions to accommodate bad blocks.}
+\label{dynpart}
+\end{figure}
+
+One important property of this partitioning mechanism is that the
+partition sizes may differ slightly beween devices, depending on
+the number and location of initial bad NAND blocks.
+
+The partition table is stored in the u-boot environment. Since
+partition tables are device-specific, so are therefore also u-boot
+environments.
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{Environment updates}
+
+There are two ``correct'' ways to change the 
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{Production issues}
+
+
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{Usage issues}
+
+Most users do not expect the partition table to be device-specific,
+and may actually be unaware that the partition table is stored in the
+u-boot environment.
+
+This sometimes leads to the incorrect assumption that there is a
+``standard'' environment all devices could use. It also leads to the
+assumption that an environment that has been damaged can be restored
+by simply copying the environment of a different device.
+
+If a device receives the environment and thus the partition table of
+a different device, a number of subtle problems may occur. The most
+likely are:
+
+\begin{itemize}
+  \item The beginning of the kernel partition changes, which causes
+    attempts to boot the kernel to fail with a CRC error. This can be
+    ``corrected'' by installing a new kernel through DFU.
+  \item The beginning of the root file system partition changes. Due
+    to the file system (JFFS2) being tolerant to missing blocks, this
+    is often a silent failure, that only causes some checksum errors
+    or the disappearance of some files.
+\end{itemize}
+
+Also, if an incorrect parition table is corrected later, this may cause
+the same type of failures, and possibly files in the rootfs to reappear.
+
+% -----------------------------------------------------------------------------
+
+\section{Partitions with slack}
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{Partition structure}
+
+\begin{figure}[ht]
+\begin{center}
+\includegraphics{slackpart.eps}
+\end{center}
+\caption{Static partitions with slack space to accommodate bad blocks.}
+\label{slackpart}
+\end{figure}
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{Additional testing}
+
+@@@ additional testing required to verify that slack is indeed sufficient
+
+% -----------------------------------------------------------------------------
+
+\section{Calculating partition sizes}
+
+Assuming that initial bad blocks occur independently, we can calculate the
+probability that adding a certain number of slack blocks to a partition
+will provide enough space to accommodate the bad blocks this partition may
+contain.
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{...}
+
+$X_n$ be the number of bad blocks in a partition containing $n$ blocks.
+Each block is bad with probability $b$. Thus, the probability that this
+partition contains exactly $k$ bad blocks is:
+
+$$
+P(X_n=k)=\left(
+  \hskip-1.5mm
+  \begin{array}{c}
+  k \\
+  n \\
+  \end{array}
+  \hskip-1.5mm
+  \right)
+  b^k(1-b)^{n-k}
+$$
+
+If a partition of size $n$ contains $s$ slack blocks, the probability
+that there will be no more than $s$ bad blocks in this partition is:
+
+$$P(X_n\le s)=\sum_{i=0}^s \left(
+  \hskip-1.5mm
+  \begin{array}{c}
+  i \\
+  n \\
+  \end{array}
+  \hskip-1.5mm
+\right)b^i(1-b)^{n-i}$$
+
+This formula does not apply if a partition contains the the first block,
+which is always good.
+The probability that one or more partitions on a device do not have enough
+slack blocks can be approximated by adding the $1-P(X_n\le s)$ for all
+partitions.
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{Example sizes}
+
+Table \ref{egsizes} shows the number of data blocks a partition can contain
+for a given number of slack blocks, such that the number of bad blocks in
+the partition will be below the number of slack blocks with a given
+probability.
+
+\begin{table}[ht]
+\begin{center}
+\begin{tabular}{|r|r|r|}
+  \hline
+  \multicolumn{1}{|c|}{Slack blocks ($s$)} &
+    \multicolumn{2}{c|}{Maximum data blocks ($n-s$)} \\
+  & $P(X_n)\le 10^{-6}$ & $P(X_n)\le 10^{-9}$ \\
+  \hline
+\input{slack.inc}
+  \hline
+\end{tabular}
+\end{center}
+\caption{}
+\label{egsizes}
+\end{table}
+
+For the first partition, add one to the number of data blocks, since the
+first block is guaranteed to be good.
+
+
+% -----------------------------------------------------------------------------
+
+\section{Example sizes}
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{GTA02}
+
+% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+\subsection{GTA03}
+
+
+% -----------------------------------------------------------------------------
+
+\section{Bad block table removal}
+
+% -----------------------------------------------------------------------------
+
+\section{Conclusion}
+
+% -----------------------------------------------------------------------------
+
+\url{http://markmail.org/message/2hbxeemdo5djgnoo}
+\url{http://lists.openmoko.org/pipermail/openmoko-kernel/2008-April/002238.html}
+\url{http://svn.openmoko.org/developers/werner/bb_slack.pl}
+
+\end{document}
+
+* kernel: some will fail before others if we estimate too low

Added: developers/werner/nandpart/rlatex
===================================================================
--- developers/werner/nandpart/rlatex	                        (rev 0)
+++ developers/werner/nandpart/rlatex	2008-06-10 23:55:41 UTC (rev 4483)
@@ -0,0 +1,21 @@
+#!/bin/sh
+while true; do
+    pid=$$
+    export pid
+    rm -f /tmp/rlok$pid
+    (
+        if latex $*; then
+	    touch /tmp/rlok$pid
+	fi
+    ) | tee /tmp/rlso$pid
+    if [ ! -f /tmp/rlok$pid ]; then
+	rm -f /tmp/rlso$pid
+	exit 1
+    fi
+    if grep '^LaTeX Warning: Label(s) may' /tmp/rlso$pid >/dev/null; then :
+    else
+	rm -f /tmp/rlso$pid
+	exit 0
+    fi
+    echo "Re-running LaTeX"
+done


Property changes on: developers/werner/nandpart/rlatex
___________________________________________________________________
Name: svn:executable
   + *

Added: developers/werner/nandpart/slackpart.fig
===================================================================
--- developers/werner/nandpart/slackpart.fig	                        (rev 0)
+++ developers/werner/nandpart/slackpart.fig	2008-06-10 23:55:41 UTC (rev 4483)
@@ -0,0 +1,99 @@
+#FIG 3.2  Produced by xfig version 3.2.5
+Landscape
+Center
+Inches
+A4      
+100.00
+Single
+-2
+1200 2
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 4
+	 11100 5100 2100 5100 2100 4500 11100 4500
+2 1 1 2 0 7 40 -1 -1 6.000 0 0 -1 0 0 2
+	 11700 4500 11100 4500
+2 1 1 2 0 7 40 -1 -1 6.000 0 0 -1 0 0 2
+	 11700 5100 11100 5100
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 2250 4500 2400 4500 2400 5100 2250 5100 2250 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 2550 4500 2700 4500 2700 5100 2550 5100 2550 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 2850 4500 3000 4500 3000 5100 2850 5100 2850 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 3150 4500 3300 4500 3300 5100 3150 5100 3150 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 3450 4500 3600 4500 3600 5100 3450 5100 3450 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 3750 4500 3900 4500 3900 5100 3750 5100 3750 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 4050 4500 4200 4500 4200 5100 4050 5100 4050 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 4350 4500 4500 4500 4500 5100 4350 5100 4350 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 4650 4500 4800 4500 4800 5100 4650 5100 4650 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 4950 4500 5100 4500 5100 5100 4950 5100 4950 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 5250 4500 5400 4500 5400 5100 5250 5100 5250 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 5550 4500 5700 4500 5700 5100 5550 5100 5550 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 6150 4500 6300 4500 6300 5100 6150 5100 6150 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 6450 4500 6600 4500 6600 5100 6450 5100 6450 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 6750 4500 6900 4500 6900 5100 6750 5100 6750 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 7050 4500 7200 4500 7200 5100 7050 5100 7050 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 7350 4500 7500 4500 7500 5100 7350 5100 7350 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 7650 4500 7800 4500 7800 5100 7650 5100 7650 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 7950 4500 8100 4500 8100 5100 7950 5100 7950 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 8250 4500 8400 4500 8400 5100 8250 5100 8250 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 8550 4500 8700 4500 8700 5100 8550 5100 8550 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 8850 4500 9000 4500 9000 5100 8850 5100 8850 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 9150 4500 9300 4500 9300 5100 9150 5100 9150 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 9450 4500 9600 4500 9600 5100 9450 5100 9450 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 9750 4500 9900 4500 9900 5100 9750 5100 9750 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 10050 4500 10200 4500 10200 5100 10050 5100 10050 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 10350 4500 10500 4500 10500 5100 10350 5100 10350 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 10650 4500 10800 4500 10800 5100 10650 5100 10650 4500
+2 2 0 0 0 7 50 -1 18 0.000 0 0 -1 0 0 5
+	 10950 4500 11100 4500 11100 5100 10950 5100 10950 4500
+2 2 0 0 0 7 50 -1 10 0.000 0 0 -1 0 0 5
+	 5850 4500 6000 4500 6000 5100 5850 5100 5850 4500
+2 2 0 0 0 7 50 -1 10 0.000 0 0 -1 0 0 5
+	 6900 4500 7050 4500 7050 5100 6900 5100 6900 4500
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 2100 3900 2100 4350
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
+	1 1 2.00 90.00 90.00
+	1 1 2.00 90.00 90.00
+	 6525 4050 10725 4050
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 6450 4500 6450 5100
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 10800 4500 10800 5100
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 10800 3900 10800 4350
+2 1 0 2 0 7 40 -1 -1 0.000 0 0 -1 0 0 2
+	 6450 3900 6450 4350
+2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 1 2
+	1 1 2.00 90.00 90.00
+	1 1 2.00 90.00 90.00
+	 2175 4050 6375 4050
+4 1 0 50 -1 18 12 0.0000 4 210 1800 4275 5475 28 "good" blocks\001
+4 1 0 50 -1 18 12 0.0000 4 210 1920 4275 3900 29 blocks (9 slack)\001
+4 1 0 50 -1 18 12 0.0000 4 210 1920 8625 3900 29 blocks (9 slack)\001
+4 1 0 50 -1 18 12 0.0000 4 210 1800 8625 5475 28 "good" blocks\001





More information about the commitlog mailing list