]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add commentary to clarify what is happening when an I/O error occurs while
authordrh <drh@noemail.net>
Tue, 26 Feb 2008 16:16:45 +0000 (16:16 +0000)
committerdrh <drh@noemail.net>
Tue, 26 Feb 2008 16:16:45 +0000 (16:16 +0000)
writing dirty pages to the database file. (CVS 4811)

FossilOrigin-Name: afe49d81f479715e13f18a97170d414a853a6cfe

manifest
manifest.uuid
src/pager.c

index a1b66498713e962fc44922f602d7101abafb1d42..be32d529279a680dfb3edcb01a4318b991c5304a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\san\sassert()\sto\sverify\sthat\sthe\sdirty-page\slist\sin\sthe\spager\sis\nvalid\sbefore\susing\sit.\s(CVS\s4810)
-D 2008-02-26T14:46:05
+C Add\scommentary\sto\sclarify\swhat\sis\shappening\swhen\san\sI/O\serror\soccurs\swhile\nwriting\sdirty\spages\sto\sthe\sdatabase\sfile.\s(CVS\s4811)
+D 2008-02-26T16:16:45
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in 6be8d7c60afa918807e77ec4459f8aff68c996d9
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -127,7 +127,7 @@ F src/os_unix.c e4daef7628f690fa2b188af3632fb18f96525946
 F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
 F src/os_win.c aa3f4bbee3b8c182d25a33fbc319f486857c12c1
 F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
-F src/pager.c 1d5d4167f80bc5d487c026aea5fe08753f9a5c78
+F src/pager.c ee55f9c201d1df44e684aa42b31f47c5a8ec8ff0
 F src/pager.h 8174615ffd14ccc2cad2b081b919a398fa95e3f9
 F src/parse.y 00f2698c8ae84f315be5e3f10b63c94f531fdd6d
 F src/pragma.c e3f39f8576234887ecd0c1de43dc51af5855930c
@@ -621,7 +621,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P 427e7f8b4a54eb6136174af63a467324d6fb051e
-R 24a233a27b1c7d161b4f137b2e844c7b
+P 942daf94ef1f8ac678988e175ef968a2d3f801e9
+R 78628a049bcafa60db998c6268ba7168
 U drh
-Z 2c7770a62aa3333221324adf20aa5a18
+Z 794fa50c5e327e7a323854fb5d8e9a99
index 7c591167fbfffd419c30aee38a5365eefde5fbfa..a3349ab46b46713cc62e88aee2804cd410f72b9b 100644 (file)
@@ -1 +1 @@
-942daf94ef1f8ac678988e175ef968a2d3f801e9
\ No newline at end of file
+afe49d81f479715e13f18a97170d414a853a6cfe
\ No newline at end of file
index c7b34abbe539d709e1f8dd2ebc12444c3bf2be5b..d8341ff039e73d29b777eed07348493795c2eb60 100644 (file)
@@ -18,7 +18,7 @@
 ** file simultaneously, or one process from reading the database while
 ** another is writing.
 **
-** @(#) $Id: pager.c,v 1.410 2008/02/26 14:46:05 drh Exp $
+** @(#) $Id: pager.c,v 1.411 2008/02/26 16:16:45 drh Exp $
 */
 #ifndef SQLITE_OMIT_DISKIO
 #include "sqliteInt.h"
@@ -4578,8 +4578,14 @@ int sqlite3PagerCommitPhaseOne(Pager *pPager, const char *zMaster, Pgno nTrunc){
     pPg = pager_get_all_dirty_pages(pPager);
     rc = pager_write_pagelist(pPg);
     if( rc!=SQLITE_OK ){
-      while( pPg && !pPg->dirty ){ pPg = pPg->pDirty; }
-      pPager->pDirty = pPg;
+      assert( rc!=SQLITE_IOERR_BLOCKED );
+      /* The error might have left the dirty list all fouled up here,
+      ** but that does not matter because if the if the dirty list did
+      ** get corrupted, then the transaction will roll back and
+      ** discard the dirty list.  There is an assert in
+      ** pager_get_all_dirty_pages() that verifies that no attempt
+      ** is made to use an invalid dirty list.
+      */
       goto sync_exit;
     }
     pPager->pDirty = 0;