* this as follows:
.=======.
- ||START||
+ ||START||
`======='
- |
- | open F
- |
- | F ENOENT
+ |
+ | open F
+ |
+ | F ENOENT
|`---------------------------------------------------.
F OPEN OK | |
|`---------------- - - - |
| | \ | |
| | \ | TIME TO RETRY |
|<--------'| ,---<---'\ `----------------'
- | D NONE | | D NONE \
- | | | \
- | | | |
- | | V |
- | V | V
- | ============= | ============
- | SEPARATED/ | DROPPING/
- | flsh->fd>=0 | flsh->fd>=0
- | [Separated] | [Dropping]
- | main F idle | main none
- | old D tail | old D tail
- | ============= | ============
- | | | |
- ^ | EOF ON D | | EOF ON D
- | V | V
- | =============== | ===============
- | SEPARATED/ | DROPPING/
- | flsh->fd==-1 V flsh->fd==-1
- | [Finishing] | [Dropping]
- | main F tail `. main none
- | old D closed `. old D closed
- | =============== `. ===============
- | | `. |
+ | D NONE | | D NONE \
+ | | | \
+ | | | |
+ | | V |
+ | V | V
+ | ============= | ============
+ | SEPARATED/ | DROPPING/
+ | flsh->fd>=0 | flsh->fd>=0
+ | [Separated] | [Dropping]
+ | main F idle | main none
+ | old D tail | old D tail
+ | ============= | ============
+ | | | |
+ ^ | EOF ON D | | EOF ON D
+ | V | V
+ | =============== | ===============
+ | SEPARATED/ | DROPPING/
+ | flsh->fd==-1 V flsh->fd==-1
+ | [Finishing] | [Dropping]
+ | main F tail `. main none
+ | old D closed `. old D closed
+ | =============== `. ===============
+ | | `. |
| | ALL D PROCESSED `. | ALL D PROCESSED
| V install defer as backlog `. V install defer as backlog
- ^ | close D \| close D
- | | unlink D | unlink D
+ ^ | close D \| close D
+ | | unlink D | unlink D
| | | unlink lock
| | | exit
`----------' V