]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Simplification to the posix_fallocate() replacement used for the
authordrh <drh@noemail.net>
Tue, 1 Dec 2015 22:09:42 +0000 (22:09 +0000)
committerdrh <drh@noemail.net>
Tue, 1 Dec 2015 22:09:42 +0000 (22:09 +0000)
SQLITE_FCNTL_SIZE_HINT file control in the unix VFS.

FossilOrigin-Name: 74934d3f60ad9f6550297410eada0f288e0123c4

manifest
manifest.uuid
src/os_unix.c

index 1171656df0b0c65472012123dcdf3d049b7a1d83..ce2f2c25e339bee8fb7e2cf8aeec8496943aa78c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\sSQLITE_LIKE_DOESNT_MATCH_BLOBS\scompile-time\soption.
-D 2015-12-01T21:23:07.560
+C Simplification\sto\sthe\sposix_fallocate()\sreplacement\sused\sfor\sthe\nSQLITE_FCNTL_SIZE_HINT\sfile\scontrol\sin\sthe\sunix\sVFS.
+D 2015-12-01T22:09:42.967
 F Makefile.in 23d9a63484a383fc64951b25ef44067930f98dc6
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc e8fdca1cb89a1b58b5f4d3a130ea9a3d28cb314d
@@ -323,7 +323,7 @@ F src/os.c 8fd25588eeba74068d41102d26810e216999b6c8
 F src/os.h 3e57a24e2794a94d3cf2342c6d9a884888cd96bf
 F src/os_common.h abdb9a191a367793268fe553d25bab894e986a0e
 F src/os_setup.h c9d4553b5aaa6f73391448b265b89bed0b890faa
-F src/os_unix.c 7d56433ac85e77423d2d613fd5e53db08c5868ed
+F src/os_unix.c 5808a077bf6842a47d65197f7843d4c391636b75
 F src/os_win.c 386fba30419e8458b13209781c2af5590eab2811
 F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
 F src/pager.c f92aacd5216d8815136c9e0190041783c602641a
@@ -1408,7 +1408,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P e3d8628456848a70035bbdeca6dc6c21f688b9a5
-R ee2257e707ea5c58e9d484a1c772cd3c
+P 9e1d6d4c391ff90077f0d1cdeb567969fee9f747
+R 769374e25ea21fa88cb308a9a19cbf86
 U drh
-Z b3c4a1b23e3be107d1964e5242f6524b
+Z d260ee6b5b66bd6991fd3ea098b02c75
index b0e59d95bbc2f2b81b6bd1b1b28be0a1cdd3233c..dc83ba56f8b53fe808d4b87309e5c7a15ef922eb 100644 (file)
@@ -1 +1 @@
-9e1d6d4c391ff90077f0d1cdeb567969fee9f747
\ No newline at end of file
+74934d3f60ad9f6550297410eada0f288e0123c4
\ No newline at end of file
index 475beed28b070d8ff007d5e10cfe5aa9fd400938..e3a6f778dd9c00a04b7f20b612c0654440a654ec 100644 (file)
@@ -3662,18 +3662,14 @@ static int fcntlSizeHint(unixFile *pFile, i64 nByte){
       int nWrite = 0;             /* Number of bytes written by seekAndWrite */
       i64 iWrite;                 /* Next offset to write to */
 
-      iWrite = ((buf.st_size + 2*nBlk - 1)/nBlk)*nBlk-1;
+      iWrite = (buf.st_size/nBlk)*nBlk + nBlk - 1;
       assert( iWrite>=buf.st_size );
-      assert( (iWrite/nBlk)==((buf.st_size+nBlk-1)/nBlk) );
       assert( ((iWrite+1)%nBlk)==0 );
-      for(/*no-op*/; iWrite<nSize; iWrite+=nBlk ){
+      for(/*no-op*/; iWrite<nSize+nBlk-1; iWrite+=nBlk ){
+        if( iWrite>=nSize ) iWrite = nSize - 1;
         nWrite = seekAndWrite(pFile, iWrite, "", 1);
         if( nWrite!=1 ) return SQLITE_IOERR_WRITE;
       }
-      if( nWrite==0 || (nSize%nBlk) ){
-        nWrite = seekAndWrite(pFile, nSize-1, "", 1);
-        if( nWrite!=1 ) return SQLITE_IOERR_WRITE;
-      }
 #endif
     }
   }