Fossil SCM

Minor performance optimizations on fusefs.

drh 2014-06-14 14:15 trunk
Commit bd4565e9d0b06724c671b68540a0457ea2433c12
1 file changed +8 -2
+8 -2
--- src/fusefs.c
+++ src/fusefs.c
@@ -132,15 +132,20 @@
132132
if( fusefs.pMan==0 ) return -ENOENT;
133133
pFile = manifest_file_seek(fusefs.pMan, fusefs.az[2], 1);
134134
if( pFile==0 ) return -ENOENT;
135135
stbuf->st_mtime = (fusefs.pMan->rDate - 2440587.5)*86400.0;
136136
if( strcmp(fusefs.az[2], pFile->zName)==0 ){
137
+ static Stmt q;
137138
stbuf->st_mode = S_IFREG |
138139
(manifest_file_mperm(pFile)==PERM_EXE ? 0555 : 0444);
139140
stbuf->st_nlink = 1;
140
- stbuf->st_size = db_int(0, "SELECT size FROM blob WHERE uuid='%s'",
141
- pFile->zUuid);
141
+ db_static_prepare(&q, "SELECT size FROM blob WHERE uuid=$uuid");
142
+ db_bind_text(&q, "$uuid", pFile->zUuid);
143
+ if( db_step(&q)==SQLITE_ROW ){
144
+ stbuf->st_size = db_column_int(&q, 0);
145
+ }
146
+ db_reset(&q);
142147
return 0;
143148
}
144149
n = (int)strlen(fusefs.az[2]);
145150
if( strncmp(fusefs.az[2], pFile->zName, n)!=0 ) return -ENOENT;
146151
if( pFile->zName[n]!='/' ) return -ENOENT;
@@ -305,8 +310,9 @@
305310
azNewArgv[0] = g.argv[0];
306311
azNewArgv[1] = doDebug ? "-d" : "-f";
307312
azNewArgv[2] = "-s";
308313
azNewArgv[3] = zMountPoint;
309314
azNewArgv[4] = 0;
315
+ g.localOpen = 0; /* Prevent tags like "current" and "prev" */
310316
fuse_main(4, azNewArgv, &fusefs_methods, NULL);
311317
#endif
312318
}
313319
--- src/fusefs.c
+++ src/fusefs.c
@@ -132,15 +132,20 @@
132 if( fusefs.pMan==0 ) return -ENOENT;
133 pFile = manifest_file_seek(fusefs.pMan, fusefs.az[2], 1);
134 if( pFile==0 ) return -ENOENT;
135 stbuf->st_mtime = (fusefs.pMan->rDate - 2440587.5)*86400.0;
136 if( strcmp(fusefs.az[2], pFile->zName)==0 ){
 
137 stbuf->st_mode = S_IFREG |
138 (manifest_file_mperm(pFile)==PERM_EXE ? 0555 : 0444);
139 stbuf->st_nlink = 1;
140 stbuf->st_size = db_int(0, "SELECT size FROM blob WHERE uuid='%s'",
141 pFile->zUuid);
 
 
 
 
142 return 0;
143 }
144 n = (int)strlen(fusefs.az[2]);
145 if( strncmp(fusefs.az[2], pFile->zName, n)!=0 ) return -ENOENT;
146 if( pFile->zName[n]!='/' ) return -ENOENT;
@@ -305,8 +310,9 @@
305 azNewArgv[0] = g.argv[0];
306 azNewArgv[1] = doDebug ? "-d" : "-f";
307 azNewArgv[2] = "-s";
308 azNewArgv[3] = zMountPoint;
309 azNewArgv[4] = 0;
 
310 fuse_main(4, azNewArgv, &fusefs_methods, NULL);
311 #endif
312 }
313
--- src/fusefs.c
+++ src/fusefs.c
@@ -132,15 +132,20 @@
132 if( fusefs.pMan==0 ) return -ENOENT;
133 pFile = manifest_file_seek(fusefs.pMan, fusefs.az[2], 1);
134 if( pFile==0 ) return -ENOENT;
135 stbuf->st_mtime = (fusefs.pMan->rDate - 2440587.5)*86400.0;
136 if( strcmp(fusefs.az[2], pFile->zName)==0 ){
137 static Stmt q;
138 stbuf->st_mode = S_IFREG |
139 (manifest_file_mperm(pFile)==PERM_EXE ? 0555 : 0444);
140 stbuf->st_nlink = 1;
141 db_static_prepare(&q, "SELECT size FROM blob WHERE uuid=$uuid");
142 db_bind_text(&q, "$uuid", pFile->zUuid);
143 if( db_step(&q)==SQLITE_ROW ){
144 stbuf->st_size = db_column_int(&q, 0);
145 }
146 db_reset(&q);
147 return 0;
148 }
149 n = (int)strlen(fusefs.az[2]);
150 if( strncmp(fusefs.az[2], pFile->zName, n)!=0 ) return -ENOENT;
151 if( pFile->zName[n]!='/' ) return -ENOENT;
@@ -305,8 +310,9 @@
310 azNewArgv[0] = g.argv[0];
311 azNewArgv[1] = doDebug ? "-d" : "-f";
312 azNewArgv[2] = "-s";
313 azNewArgv[3] = zMountPoint;
314 azNewArgv[4] = 0;
315 g.localOpen = 0; /* Prevent tags like "current" and "prev" */
316 fuse_main(4, azNewArgv, &fusefs_methods, NULL);
317 #endif
318 }
319

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button