Dear SQLite developers,

Sqlite version: 3.8.8.3
Linux version: 3.10.31-ltsi

Problem:
When update database and power off immediately, it cannnot actually make changes to database file in the disk.
Although the HAVE_FDATASYNC comile-time option is true.
If manually called sync() after executing a SQL statement, it does flush the database file to disk.

I think the OSTRACE log can be helpful, so I toke it.
Could you help to analyse it and tell me why fdatasync() doesn't work?
====================================================================
LOCK    154 SHARED was NONE(NONE,0) pid=2289 (unix)
LOCK    154 SHARED ok (unix)
READ    154    16      24 0
LOCK    154 RESERVED was SHARED(SHARED,1) pid=2289 (unix)
LOCK    154 RESERVED ok (unix)
OPENX   168 /var/user/aaa/bbb.db-journal 0400102
OPEN    168 /var/user/aaa/bbb.db-journal
WRITE   168   512       0 0
WRITE   168     4     512 0
WRITE   168  1024     516 0
WRITE   168     4    1540 0
LOCK    154 EXCLUSIVE was RESERVED(RESERVED,1) pid=2289 (unix)
LOCK    154 EXCLUSIVE ok (unix)
WRITE   168     4    1544 0
WRITE   168  1024    1548 0
WRITE   168     4    2572 0
READ    168     0    3072 0
SYNC    168
DIRSYNC /var/user/aaa/bbb.db-journal (have_fullfsync=0 fullsync=0)
OPENDIR 169 /var/user/aaa
WRITE   168    12       0 0
SYNC    168
READ    154     4      24 0
WRITE   154  1024       0 0
WRITE   154  1024   20480 0
SYNC    154
CLOSE   -1
UNLOCK  154 1 was 4(4,1) pid=2289 (unix)
UNLOCK  154 0 was 1(1,1) pid=2289 (unix)
====================================================================


Cordially yours

LiuXiang

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to