Overview
| Comment: | Updated to flush cache before exiting in exit path mode and allow short reads without returning an error as they seem to be expected |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
67735b9ee34f262331fd029307b0ca10 |
| User & Date: | rkeene on 2014-11-15 17:20:18 |
| Other Links: | manifest | tags |
Context
|
2014-11-15
| ||
| 17:33 | Added dangling symlink support check-in: 538accae67 user: rkeene tags: trunk | |
| 17:20 | Updated to flush cache before exiting in exit path mode and allow short reads without returning an error as they seem to be expected check-in: 67735b9ee3 user: rkeene tags: trunk | |
| 16:46 | Added more debugging, renamed appfs_terminate_interp for with more accurate name, fixed FUSE read/write to use pread/pwrite and return no short reads as is required by FUSE, added call to Tcl_FinalizeThread() on thread termination check-in: d5bfe6710c user: rkeene tags: trunk | |
Changes
Modified appfsd.c from [69177869fa] to [1c0ba85f13].
| ︙ | ︙ | |||
385 386 387 388 389 390 391 |
interp = NULL;
pthread_ret = pthread_setspecific(interpKey, interp);
}
if (global_interp_reset_key == -1) {
| | | 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 |
interp = NULL;
pthread_ret = pthread_setspecific(interpKey, interp);
}
if (global_interp_reset_key == -1) {
APPFS_DEBUG("Returning NULL since we are in the process of terminating all threads.");
return(NULL);
}
thread_interp_reset_key = global_interp_reset_key;
if (interp == NULL) {
|
| ︙ | ︙ | |||
1072 1073 1074 1075 1076 1077 1078 |
}
global_interp_reset_key = __sync_fetch_and_add(&interp_reset_key, 0);
if (global_interp_reset_key != -1) {
APPFS_DEBUG("Error sending kill signal to all threads, aborting anyway.");
}
| | | | 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 |
}
global_interp_reset_key = __sync_fetch_and_add(&interp_reset_key, 0);
if (global_interp_reset_key != -1) {
APPFS_DEBUG("Error sending kill signal to all threads, aborting anyway.");
}
appfs_get_path_info_cache_flush(-1, -1);
fuse_exit(fuse_get_context()->fuse);
return;
}
#endif
static int appfs_fuse_readlink(const char *path, char *buf, size_t size) {
struct appfs_pathinfo pathinfo;
|
| ︙ | ︙ | |||
1390 1391 1392 1393 1394 1395 1396 |
size -= read_ret;
buf += read_ret;
offset += read_ret;
retval += read_ret;
}
if (size != 0) {
| | < < | 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 |
size -= read_ret;
buf += read_ret;
offset += read_ret;
retval += read_ret;
}
if (size != 0) {
APPFS_DEBUG("error: incomplete read (this might be an error because FUSE will request the exact length of the file)");
}
APPFS_DEBUG("Returning: %i", retval);
return(retval);
}
|
| ︙ | ︙ |