- |<--------'| ,---<---'\ `----------------'
- | 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
- | | | unlink lock
- | | | exit
- `----------' V
- ==========
- (ESRCH)
- [Droppped]
- ==========
+ | |`------->----. ,---<---'\ `----------------'
+ | | D NONE | | D NONE `----.
+ | V | | V
+ | ============= V V ============
+ | SEPARATED-1 | | DROPPING-1
+ | flsh->fd>=0 | | flsh->fd>=0
+ | [Separated] | | [Dropping]
+ | main F idle | | main none
+ | old D tail | | old D tail
+ | ============= | | ============
+ | | | | install |
+ ^ | EOF ON D | | defer | EOF ON D
+ | V | | V
+ | =============== | | ===============
+ | SEPARATED-2 | | DROPPING-2
+ | flsh->fd==-1 | V flsh->fd==-1
+ | [Finishing] | | [Dropping]
+ | main F tail | `. main none
+ | old D closed | `. old D closed
+ | =============== V `. ===============
+ | | `. |
+ | | ALL D PROCESSED `. | ALL D PROCESSED
+ | V install defer as backlog `. | install defer
+ ^ | close D `. | close D
+ | | unlink D `. | unlink D
+ | | | |
+ | | V V
+ `----------' ==============
+ DROPPED
+ [Dropped]
+ main none
+ old none
+ some backlog
+ ==============
+ |
+ | ALL BACKLOG DONE
+ |
+ | unlink lock
+ | exit
+ V
+ ==========
+ (ESRCH)
+ [Droppped]
+ ==========
+ * ->8-