@@ -149,6 +149,7 @@ impl CrucibleBackend {
149
149
block_size : block_size as u32 ,
150
150
total_size : sectors,
151
151
read_only : opts. read_only . unwrap_or ( false ) ,
152
+ supports_discard : false ,
152
153
} ,
153
154
skip_flush : opts. skip_flush . unwrap_or ( false ) ,
154
155
} ) ,
@@ -198,6 +199,7 @@ impl CrucibleBackend {
198
199
block_size : block_size as u32 ,
199
200
total_size : size / block_size,
200
201
read_only : opts. read_only . unwrap_or ( false ) ,
202
+ supports_discard : false ,
201
203
} ,
202
204
skip_flush : opts. skip_flush . unwrap_or ( false ) ,
203
205
} ) ,
@@ -312,6 +314,8 @@ pub enum Error {
312
314
BadGuestRegion ,
313
315
#[ error( "backend is read-only" ) ]
314
316
ReadOnly ,
317
+ #[ error( "operation not supported" ) ]
318
+ Unsupported ,
315
319
316
320
#[ error( "offset or length not multiple of blocksize" ) ]
317
321
BlocksizeMismatch ,
@@ -329,6 +333,7 @@ impl From<Error> for block::Result {
329
333
fn from ( value : Error ) -> Self {
330
334
match value {
331
335
Error :: ReadOnly => block:: Result :: ReadOnly ,
336
+ Error :: Unsupported => block:: Result :: Unsupported ,
332
337
_ => block:: Result :: Failure ,
333
338
}
334
339
}
@@ -421,6 +426,10 @@ async fn process_request(
421
426
let _ = block. flush ( None ) . await ?;
422
427
}
423
428
}
429
+ block:: Operation :: Discard ( ..) => {
430
+ // Crucible does not support discard operations for now
431
+ return Err ( Error :: Unsupported ) ;
432
+ }
424
433
}
425
434
Ok ( ( ) )
426
435
}
0 commit comments