@@ -528,6 +528,7 @@ impl LinearDev {
528528 name : & DmName ,
529529 uuid : Option < & DmUuid > ,
530530 table : Vec < TargetLine < LinearDevTargetParams > > ,
531+ create_options : Option < DmOptions > ,
531532 ) -> DmResult < LinearDev > {
532533 let table = LinearDevTargetTable :: new ( table) ;
533534 let dev = if device_exists ( dm, name) ? {
@@ -539,7 +540,11 @@ impl LinearDev {
539540 device_match ( dm, & dev, uuid) ?;
540541 dev
541542 } else {
542- let dev_info = device_create ( dm, name, uuid, & table, DmOptions :: private ( ) ) ?;
543+ let options = match create_options {
544+ Some ( options) => options,
545+ None => DmOptions :: private ( ) ,
546+ } ;
547+ let dev_info = device_create ( dm, name, uuid, & table, options) ?;
543548 LinearDev {
544549 dev_info : Box :: new ( dev_info) ,
545550 table,
@@ -596,6 +601,7 @@ mod tests {
596601 & test_name( "new" ) . expect( "valid format" ) ,
597602 None ,
598603 vec![ ] ,
604+ None ,
599605 ) ,
600606 Err ( _)
601607 ) ;
@@ -614,7 +620,7 @@ mod tests {
614620 Sectors ( 1 ) ,
615621 LinearDevTargetParams :: Linear ( params) ,
616622 ) ] ;
617- let mut ld = LinearDev :: setup ( & dm, & name, None , table) . unwrap ( ) ;
623+ let mut ld = LinearDev :: setup ( & dm, & name, None , table, None ) . unwrap ( ) ;
618624
619625 assert_matches ! ( ld. set_table( & dm, vec![ ] ) , Err ( _) ) ;
620626 ld. resume ( & dm) . unwrap ( ) ;
@@ -634,7 +640,7 @@ mod tests {
634640 Sectors ( 1 ) ,
635641 LinearDevTargetParams :: Linear ( params) ,
636642 ) ] ;
637- let mut ld = LinearDev :: setup ( & dm, & name, None , table) . unwrap ( ) ;
643+ let mut ld = LinearDev :: setup ( & dm, & name, None , table, None ) . unwrap ( ) ;
638644
639645 ld. set_name ( & dm, & name) . unwrap ( ) ;
640646 assert_eq ! ( ld. name( ) , & * name) ;
@@ -655,7 +661,7 @@ mod tests {
655661 Sectors ( 1 ) ,
656662 LinearDevTargetParams :: Linear ( params) ,
657663 ) ] ;
658- let mut ld = LinearDev :: setup ( & dm, & name, None , table) . unwrap ( ) ;
664+ let mut ld = LinearDev :: setup ( & dm, & name, None , table, None ) . unwrap ( ) ;
659665
660666 let new_name = test_name ( "new_name" ) . expect ( "valid format" ) ;
661667 ld. set_name ( & dm, & new_name) . unwrap ( ) ;
@@ -689,7 +695,7 @@ mod tests {
689695 ] ;
690696 let range: Sectors = table. iter ( ) . map ( |s| s. length ) . sum ( ) ;
691697 let count = table. len ( ) ;
692- let mut ld = LinearDev :: setup ( & dm, & name, None , table) . unwrap ( ) ;
698+ let mut ld = LinearDev :: setup ( & dm, & name, None , table, None ) . unwrap ( ) ;
693699
694700 let table = LinearDev :: read_kernel_table ( & dm, & DevId :: Name ( ld. name ( ) ) )
695701 . unwrap ( )
@@ -723,7 +729,7 @@ mod tests {
723729 )
724730 } )
725731 . collect :: < Vec < _ > > ( ) ;
726- let mut ld = LinearDev :: setup ( & dm, & name, None , table. clone ( ) ) . unwrap ( ) ;
732+ let mut ld = LinearDev :: setup ( & dm, & name, None , table. clone ( ) , None ) . unwrap ( ) ;
727733
728734 let loaded_table = LinearDev :: read_kernel_table ( & dm, & DevId :: Name ( ld. name ( ) ) ) . unwrap ( ) ;
729735 assert ! (
@@ -747,15 +753,15 @@ mod tests {
747753 Sectors ( 1 ) ,
748754 LinearDevTargetParams :: Linear ( params) ,
749755 ) ] ;
750- let mut ld = LinearDev :: setup ( & dm, & name, None , table. clone ( ) ) . unwrap ( ) ;
756+ let mut ld = LinearDev :: setup ( & dm, & name, None , table. clone ( ) , None ) . unwrap ( ) ;
751757 let params2 = LinearTargetParams :: new ( dev, Sectors ( 1 ) ) ;
752758 let table2 = vec ! [ TargetLine :: new(
753759 Sectors ( 0 ) ,
754760 Sectors ( 1 ) ,
755761 LinearDevTargetParams :: Linear ( params2) ,
756762 ) ] ;
757- assert_matches ! ( LinearDev :: setup( & dm, & name, None , table2) , Err ( _) ) ;
758- assert_matches ! ( LinearDev :: setup( & dm, & name, None , table) , Ok ( _) ) ;
763+ assert_matches ! ( LinearDev :: setup( & dm, & name, None , table2, None ) , Err ( _) ) ;
764+ assert_matches ! ( LinearDev :: setup( & dm, & name, None , table, None ) , Ok ( _) ) ;
759765 ld. teardown ( & dm) . unwrap ( ) ;
760766 }
761767
@@ -773,8 +779,8 @@ mod tests {
773779 Sectors ( 1 ) ,
774780 LinearDevTargetParams :: Linear ( params) ,
775781 ) ] ;
776- let mut ld = LinearDev :: setup ( & dm, & name, None , table. clone ( ) ) . unwrap ( ) ;
777- let ld2 = LinearDev :: setup ( & dm, & ersatz, None , table) ;
782+ let mut ld = LinearDev :: setup ( & dm, & name, None , table. clone ( ) , None ) . unwrap ( ) ;
783+ let ld2 = LinearDev :: setup ( & dm, & ersatz, None , table, None ) ;
778784 assert_matches ! ( ld2, Ok ( _) ) ;
779785
780786 ld2. unwrap ( ) . teardown ( & dm) . unwrap ( ) ;
@@ -794,7 +800,7 @@ mod tests {
794800 Sectors ( 1 ) ,
795801 LinearDevTargetParams :: Linear ( params) ,
796802 ) ] ;
797- let mut ld = LinearDev :: setup ( & dm, & name, None , table) . unwrap ( ) ;
803+ let mut ld = LinearDev :: setup ( & dm, & name, None , table, None ) . unwrap ( ) ;
798804
799805 ld. suspend ( & dm, DmOptions :: default ( ) . set_flags ( DmFlags :: DM_NOFLUSH ) )
800806 . unwrap ( ) ;
0 commit comments