Details
-
Improvement
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
3
-
9223372036854775807
Description
This is a ticket to capture a few thoughts and a patch which implements a small part of what's required here, because it was on my mind. This will come after hybrid IO and is not to be done soon, but there should still be a place to track it.
Notes:
So for unaligned writes, it can be async.
1. Basically, this will act like AIO. You'll have to do the cleanup after the fact.
So it will change the reference counting for these.
2. You'll need to use dlmlocks - otherwise the async IO isn't safe.
This will have to be integrated carefully with hybrid - depending on when the choice is made, etc.
3. You'll need to do the locking - both the range lock and the dlmlocks will need to be held and destroyed only when the last IO cleans up.
Range locks are required to protect against write re-ordering from this client. This is an issue with AIO but AIO gets special rules.
So to summarize:
- Only applies to switched hybrid IO, since it violates the sync expectation from DIO
- Need to record dlmlocks
- Need range lock
- Need to change reference counting so it works like AIO (have to sort out precisely what that means)
- Need to clean up dlmlocks and range lock as IO completes
- Probably makes sense to associate dlmlocks with sub DIO - each SDIO will use a single dlmlock and we can have it release the dlmlock when it's complete
- Range lock will be released by the top level DIO