blockio 0.1.1.2 → 0.2.0.0
raw patch · 6 files changed
+43/−15 lines, 6 filesdep ~blockio-uringdep ~fs-simPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: blockio-uring, fs-sim
API changes (from Hackage documentation)
+ System.FS.BlockIO.IO: [ioctxIOWaitMetrics] :: IOCtxParams -> !Bool
- System.FS.BlockIO.IO: IOCtxParams :: !Int -> !Int -> IOCtxParams
+ System.FS.BlockIO.IO: IOCtxParams :: !Int -> !Int -> !Bool -> IOCtxParams
Files
- CHANGELOG.md +25/−0
- blockio.cabal +4/−4
- src-linux/System/FS/BlockIO/Async.hs +2/−1
- src-sim/System/FS/BlockIO/Sim.hs +6/−6
- src/System/FS/BlockIO/API.hs +1/−1
- src/System/FS/BlockIO/IO/Internal.hs +5/−3
CHANGELOG.md view
@@ -1,5 +1,30 @@ # Revision history for blockio +## 0.2.0.0 -- 2026-05-13++### Breaking changes++* Update to `fs-sim ^>=0.5`. See [PR+ #845](https://github.com/IntersectMBO/lsm-tree/pull/845).+* `IOCtxParams` has a new record field for configuring the use of IOWAIT+ metrics. Like the other configuration options, this option only applies on+ Linux platforms. See [PR+ #846](https://github.com/IntersectMBO/lsm-tree/pull/846). For more information+ about the new option, see the documentation for `blockio-uring`.++### New features++None++### Minor changes++* Support `blockio-uring ^>= 0.2`, and drop support for `blockio-uring ^>= 0.1`.+ See [PR #846](https://github.com/IntersectMBO/lsm-tree/pull/846)++### Bug fixes++None+ ## 0.1.1.2 -- 2026-04-24 ### Breaking changes
blockio.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.4 name: blockio-version: 0.1.1.2+version: 0.2.0.0 synopsis: Perform batches of disk I/O operations. description: Perform batches of disk I\/O operations. Performing batches of disk I\/O can@@ -46,7 +46,7 @@ type: git location: https://github.com/IntersectMBO/lsm-tree subdir: blockio- tag: blockio-0.1.1.2+ tag: blockio-0.2.0.0 common warnings ghc-options:@@ -101,7 +101,7 @@ if !flag(serialblockio) other-modules: System.FS.BlockIO.Async- build-depends: blockio-uring ^>=0.1+ build-depends: blockio-uring ^>=0.2 elif os(osx) hs-source-dirs: src-macos@@ -149,7 +149,7 @@ , blockio , bytestring ^>=0.11 || ^>=0.12 , fs-api ^>=0.4- , fs-sim ^>=0.4+ , fs-sim ^>=0.4 || ^>=0.5 , io-classes ^>=1.6 || ^>=1.7 || ^>=1.8.0.1 || ^>=1.9 || ^>=1.10 , io-classes:strict-stm , primitive ^>=0.9
src-linux/System/FS/BlockIO/Async.hs view
@@ -51,10 +51,11 @@ } ctxParamsConv :: IOI.IOCtxParams -> I.IOCtxParams-ctxParamsConv IOI.IOCtxParams{IOI.ioctxBatchSizeLimit, IOI.ioctxConcurrencyLimit} =+ctxParamsConv IOI.IOCtxParams{IOI.ioctxBatchSizeLimit, IOI.ioctxConcurrencyLimit, IOI.ioctxIOWaitMetrics} = I.IOCtxParams { I.ioctxBatchSizeLimit = ioctxBatchSizeLimit , I.ioctxConcurrencyLimit = ioctxConcurrencyLimit+ , I.ioctxIOWaitMetrics = ioctxIOWaitMetrics } submitIO ::
src-sim/System/FS/BlockIO/Sim.hs view
@@ -207,7 +207,7 @@ -- If you want to have access to the current state of the mocked file system, -- use 'simHasBlockIO' instead. runSimHasBlockIO ::- (MonadSTM m, PrimMonad m, MonadCatch m, MonadMVar m)+ (MonadSTM m, PrimMonad m, MonadMask m, MonadMVar m) => MockFS -> (HasFS m HandleMock -> HasBlockIO m HandleMock -> m a) -> m (a, MockFS)@@ -230,7 +230,7 @@ -- If you want to have access to the current state of the mocked file system -- or stream of errors, use 'simErrorHasBlockIO' instead. runSimErrorHasBlockIO ::- (MonadSTM m, PrimMonad m, MonadCatch m, MonadMVar m)+ (MonadSTM m, PrimMonad m, MonadMask m, MonadMVar m) => MockFS -> Errors -> (HasFS m HandleMock -> HasBlockIO m HandleMock -> m a)@@ -256,7 +256,7 @@ -- the user by reading @mockFsVar@, but note that the user should not leave -- @mockFsVar@ empty. simHasBlockIO ::- (MonadCatch m, MonadMVar m, PrimMonad m, MonadSTM m)+ (MonadMask m, MonadMVar m, PrimMonad m, MonadSTM m) => StrictTMVar m MockFS -> m (HasFS m HandleMock, HasBlockIO m HandleMock) simHasBlockIO var = do@@ -273,7 +273,7 @@ -- If you want to have access to the current state of the mocked file system, -- use 'simHasBlockIO' instead. simHasBlockIO' ::- (MonadCatch m, MonadMVar m, PrimMonad m, MonadSTM m)+ (MonadMask m, MonadMVar m, PrimMonad m, MonadSTM m) => MockFS -> m (HasFS m HandleMock, HasBlockIO m HandleMock) simHasBlockIO' mockFS = do@@ -293,7 +293,7 @@ -- @errorsVar@. The current state of the stream of errors can be accessed by the -- user by reading @errorsVar@. simErrorHasBlockIO ::- forall m. (MonadCatch m, MonadMVar m, PrimMonad m, MonadSTM m)+ forall m. (MonadMask m, MonadMVar m, PrimMonad m, MonadSTM m) => StrictTMVar m MockFS -> StrictTVar m Errors -> m (HasFS m HandleMock, HasBlockIO m HandleMock)@@ -314,7 +314,7 @@ -- If you want to have access to the current state of the mocked file system -- or stream of errors, use 'simErrorHasBlockIO' instead. simErrorHasBlockIO' ::- (MonadCatch m, MonadMVar m, PrimMonad m, MonadSTM m)+ (MonadMask m, MonadMVar m, PrimMonad m, MonadSTM m) => MockFS -> Errors -> m (HasFS m HandleMock, HasBlockIO m HandleMock)
src/System/FS/BlockIO/API.hs view
@@ -270,7 +270,7 @@ synchroniseDirectory hbio path' else error $ printf- "listDirectoryRecursive: %s is not a file or directory"+ "synchroniseDirectoryRecursive: %s is not a file or directory" (show path') {-------------------------------------------------------------------------------
src/System/FS/BlockIO/IO/Internal.hs view
@@ -42,18 +42,20 @@ -- them, see the @blockio-uring@ package. data IOCtxParams = IOCtxParams { ioctxBatchSizeLimit :: !Int,- ioctxConcurrencyLimit :: !Int+ ioctxConcurrencyLimit :: !Int,+ ioctxIOWaitMetrics :: !Bool } instance NFData IOCtxParams where- rnf (IOCtxParams x y) = rnf x `seq` rnf y+ rnf (IOCtxParams x y z) = rnf x `seq` rnf y `seq` rnf z -- | Default parameters. Some manual tuning of parameters might be required to -- achieve higher performance targets (see 'IOCtxParams'). defaultIOCtxParams :: IOCtxParams defaultIOCtxParams = IOCtxParams { ioctxBatchSizeLimit = 64,- ioctxConcurrencyLimit = 64 * 3+ ioctxConcurrencyLimit = 64 * 3,+ ioctxIOWaitMetrics = True } {-------------------------------------------------------------------------------