Fossil SCM
Minor performance optimizations on fusefs.
Commit
bd4565e9d0b06724c671b68540a0457ea2433c12
Parent
a73da231d864b6b…
1 file changed
+8
-2
+8
-2
| --- src/fusefs.c | ||
| +++ src/fusefs.c | ||
| @@ -132,15 +132,20 @@ | ||
| 132 | 132 | if( fusefs.pMan==0 ) return -ENOENT; |
| 133 | 133 | pFile = manifest_file_seek(fusefs.pMan, fusefs.az[2], 1); |
| 134 | 134 | if( pFile==0 ) return -ENOENT; |
| 135 | 135 | stbuf->st_mtime = (fusefs.pMan->rDate - 2440587.5)*86400.0; |
| 136 | 136 | if( strcmp(fusefs.az[2], pFile->zName)==0 ){ |
| 137 | + static Stmt q; | |
| 137 | 138 | stbuf->st_mode = S_IFREG | |
| 138 | 139 | (manifest_file_mperm(pFile)==PERM_EXE ? 0555 : 0444); |
| 139 | 140 | 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); | |
| 142 | 147 | return 0; |
| 143 | 148 | } |
| 144 | 149 | n = (int)strlen(fusefs.az[2]); |
| 145 | 150 | if( strncmp(fusefs.az[2], pFile->zName, n)!=0 ) return -ENOENT; |
| 146 | 151 | if( pFile->zName[n]!='/' ) return -ENOENT; |
| @@ -305,8 +310,9 @@ | ||
| 305 | 310 | azNewArgv[0] = g.argv[0]; |
| 306 | 311 | azNewArgv[1] = doDebug ? "-d" : "-f"; |
| 307 | 312 | azNewArgv[2] = "-s"; |
| 308 | 313 | azNewArgv[3] = zMountPoint; |
| 309 | 314 | azNewArgv[4] = 0; |
| 315 | + g.localOpen = 0; /* Prevent tags like "current" and "prev" */ | |
| 310 | 316 | fuse_main(4, azNewArgv, &fusefs_methods, NULL); |
| 311 | 317 | #endif |
| 312 | 318 | } |
| 313 | 319 |
| --- 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 |