Skip to content

Commit fea6bd6

Browse files
authored
changed the name and some comments.
1 parent ed18c81 commit fea6bd6

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

README.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
# Script_Optfs #
2-
### What is Script_Optfs? ###
3-
Script_Optfs is a conversion tool, capable of converting libraries that use `fsync` pessimistically to be compatible with the Optimistic File System ([OptFS](https://github.com/utsaslab/optfs)).
1+
# AutoOsync #
2+
### What is AutoOsync? ###
3+
AutoOsync is a conversion tool, capable of converting libraries that use `fsync` pessimistically to be compatible with the Optimistic File System ([OptFS](https://github.com/utsaslab/optfs)).
44
OptFS is a linux-ext4 variant that implements [Optimistic Crash Consistency](http://research.cs.wisc.edu/adsl/Publications/optfs-sosp13.pdf) which essentially makes the same level of guarantee as Pessimistic Crash Consistency (`fsync()` after every write) with sometimes the same speed as Probabilistic Crash Consistency (never calling `fsync()`).
55

6-
This means that you can easily speed up the writes in your program by switching to OptFS and running Script_Optfs on the libraries that are in charge of persistence.
6+
This means that you can easily speed up the writes in your program by switching to OptFS and running AutoOsync on the libraries that are in charge of persistence.
77

88
### Getting Setup ###
99
#### Script Dependencies ####
@@ -12,7 +12,7 @@ The only dependency for this script besides `Python2.7` is `LLVM` with clang bin
1212
1. Run the following script after fixing the path, if necessary, to [Install Ninja](https://github.com/JDevlieghere/dotfiles/blob/master/installers/ninja.sh)
1313
1. Then, run this script to actually get the `LLVM` source code. [LLVM](https://github.com/JDevlieghere/dotfiles/blob/master/installers/llvm.sh)
1414

15-
#### Running the Script_Optfs ####
15+
#### Running the AutoOsync ####
1616
1. Go to the script source, `script.py`, and then modify the `set_library_path` variable to your path to LLVM's `/build/lib`.
1717
Once that is done, you might need to set an environmental variable, if the compiler throws you an error, otherwise, you are done and the script can be run.
1818
1. To run the script, you just type `python script.py /path/to/library` and the script should run and modify everything in a new directory `<library_name>_`.
@@ -61,7 +61,7 @@ void dsync_foo() {
6161

6262
```
6363
3. Special case of `fsync`: Since `fsync` is an `fsync_wrapper` too, it must get its own version of osync definition and dsync definition. And it does! The osync definition of `fsync` is called `osync` and it's a system call that guarantees order and eventual durability. The dsync definition of `fsync` is called `dsync` and it's a system call that guaratess immediate durability (blocks). For more details, check the Optimistic Crash Cosnsistency paper linked above.
64-
### Safety of the Script_Optfs ###
64+
### Safety of the AutoOsync ###
6565
The script is safe in most cases, but there certainly are cases we don't account for.
6666
This script can deal with scope, so you can have functions with the same name in multiple files, as long as more than one of those functions doesn't have external linkage, our script will take care it. We went through great lengths to ensure that.
6767
However, cases where a switch statement is used, like the following:
@@ -101,15 +101,18 @@ switch (expression) {
101101
case 1:
102102
osync(fd1);
103103
break; /* this function is a dsync definition, yet it doesn't ever call dsync if case 1 is called */
104+
104105
case 2:
105106
osync(fd2);
106107
break; /* same in this case, dsync definitions should call dsync before they return */
108+
107109
default:
108110
osync(fd1);
109111
dsync(fd2); /* only in this case will dsync actually be invoked before the function returns */
110112
}
111113
}
112114
```
115+
So in this case, the dsync definition doesn't actually invariably call dsync, although that is the expected behavior.
113116
### Authors ###
114117
Tom Gong (tom.gong@utexas.edu) and Subrat Mainali (mainali.subrat@utexas.edu)
115118

0 commit comments

Comments
 (0)