@@ -27,7 +27,7 @@ use spdk_rs::libspdk::{
27
27
28
28
use crate :: {
29
29
constants:: NVME_CONTROLLER_MODEL_ID ,
30
- core:: { Cores , Mthread , Reactor , Reactors } ,
30
+ core:: { Cores , Mthread , Reactors } ,
31
31
ffihelper:: { AsStr , FfiResult } ,
32
32
subsys:: {
33
33
nvmf:: {
@@ -272,7 +272,7 @@ impl Target {
272
272
273
273
/// enable discovery for the target -- note that the discovery system is not
274
274
/// started
275
- fn enable_discovery ( & self ) {
275
+ fn enable_discovery ( & self ) -> NvmfSubsystem {
276
276
debug ! ( "enabling discovery for target" ) ;
277
277
let discovery = unsafe {
278
278
NvmfSubsystem :: from ( spdk_nvmf_subsystem_create (
@@ -296,12 +296,7 @@ impl Target {
296
296
297
297
discovery. allow_any ( true ) ;
298
298
299
- Reactor :: block_on ( async {
300
- let nqn = discovery. get_nqn ( ) ;
301
- if let Err ( e) = discovery. start ( ) . await {
302
- error ! ( "Error starting subsystem '{}': {}" , nqn, e. to_string( ) ) ;
303
- }
304
- } ) ;
299
+ discovery
305
300
}
306
301
307
302
/// stop all subsystems on this target we are borrowed here
@@ -355,13 +350,20 @@ impl Target {
355
350
356
351
/// Final state for the target during init.
357
352
pub fn running ( & mut self ) {
358
- self . enable_discovery ( ) ;
359
- info ! (
360
- "nvmf target accepting new connections and is ready to roll..{}" ,
361
- '\u{1F483}'
362
- ) ;
353
+ let discovery = self . enable_discovery ( ) ;
363
354
364
- unsafe { spdk_subsystem_init_next ( 0 ) }
355
+ Reactors :: master ( ) . send_future ( async move {
356
+ let nqn = discovery. get_nqn ( ) ;
357
+ if let Err ( error) = discovery. start ( ) . await {
358
+ error ! ( "Error starting subsystem '{nqn}': {error}" ) ;
359
+ }
360
+
361
+ info ! (
362
+ "nvmf target accepting new connections and is ready to roll..{}" ,
363
+ '\u{1F483}'
364
+ ) ;
365
+ unsafe { spdk_subsystem_init_next ( 0 ) }
366
+ } )
365
367
}
366
368
367
369
/// Shutdown procedure.
0 commit comments