@@ -74,12 +74,12 @@ struct LinuxSandboxDebugHelper<'a> {
7474impl Debug for LinuxSandbox {
7575 fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
7676 let h = LinuxSandboxDebugHelper {
77- id : & self . 0 . id ,
78- options : & self . 0 . options ,
79- zygote_sock : self . 0 . zygote_sock . lock ( ) . unwrap ( ) . as_raw_fd ( ) ,
80- zygote_pid : self . 0 . zygote_pid ,
81- watchdog_chan : self . 0 . watchdog_chan ,
82- state : self . 0 . state . snapshot ( ) ,
77+ id : & self . id ,
78+ options : & self . options ,
79+ zygote_sock : self . zygote_sock . lock ( ) . unwrap ( ) . as_raw_fd ( ) ,
80+ zygote_pid : self . zygote_pid ,
81+ watchdog_chan : self . watchdog_chan ,
82+ state : self . state . snapshot ( ) ,
8383 } ;
8484
8585 h. fmt ( f)
@@ -89,29 +89,29 @@ impl Debug for LinuxSandbox {
8989impl Sandbox for LinuxSandbox {
9090 type Error = Error ;
9191
92- fn id ( & self ) -> String {
93- self . 0 . id
92+ fn id ( & self ) -> & str {
93+ & self . id
9494 }
9595
9696 fn check_cpu_tle ( & self ) -> Result < bool , Error > {
9797 self . poll_state ( ) ?;
98- Ok ( self . 0 . state . was_cpu_tle . load ( SeqCst ) )
98+ Ok ( self . state . was_cpu_tle . load ( SeqCst ) )
9999 }
100100
101101 fn check_real_tle ( & self ) -> Result < bool , Error > {
102102 self . poll_state ( ) ?;
103- Ok ( self . 0 . state . was_wall_tle . load ( SeqCst ) )
103+ Ok ( self . state . was_wall_tle . load ( SeqCst ) )
104104 }
105105
106106 fn kill ( & self ) -> Result < ( ) , Error > {
107- jail_common:: kill_sandbox ( self . 0 . zygote_pid , & self . 0 . id , & self . 0 . cgroup_driver )
107+ jail_common:: kill_sandbox ( self . zygote_pid , & self . id , & self . cgroup_driver )
108108 . map_err ( |err| Error :: Io { source : err } ) ?;
109109 Ok ( ( ) )
110110 }
111111
112112 fn resource_usage ( & self ) -> Result < crate :: ResourceUsageData , Error > {
113- let cpu_usage = self . 0 . cgroup_driver . get_cpu_usage ( & self . 0 . id ) ;
114- let memory_usage = self . 0 . cgroup_driver . get_memory_usage ( & self . 0 . id ) ;
113+ let cpu_usage = self . cgroup_driver . get_cpu_usage ( & self . id ) ;
114+ let memory_usage = self . cgroup_driver . get_memory_usage ( & self . id ) ;
115115 Ok ( crate :: ResourceUsageData {
116116 memory : memory_usage,
117117 time : Some ( cpu_usage) ,
@@ -142,7 +142,7 @@ impl LinuxSandbox {
142142 break ;
143143 }
144144 for ch in & buf[ ..num_read] {
145- self . 0 . state . process_flag ( * ch) ?;
145+ self . state . process_flag ( * ch) ?;
146146 }
147147 }
148148
@@ -154,7 +154,7 @@ impl LinuxSandbox {
154154 settings : & crate :: linux:: Settings ,
155155 cgroup_driver : Arc < crate :: linux:: cgroup:: Driver > ,
156156 ) -> Result < LinuxSandbox , Error > {
157- let jail_id = jail_common :: gen_jail_id ( ) ;
157+ let jail_id = crate :: util :: gen_jail_id ( ) ;
158158 let mut read_end = 0 ;
159159 let mut write_end = 0 ;
160160 setup_pipe ( & mut read_end, & mut write_end) ?;
@@ -176,7 +176,7 @@ impl LinuxSandbox {
176176 } ;
177177 let startup_info = zygote:: start_zygote ( jail_options, & cgroup_driver) ?;
178178
179- let inner = LinuxSandboxInner {
179+ let sandbox = LinuxSandbox {
180180 id : jail_id,
181181 options,
182182 zygote_sock : Mutex :: new ( startup_info. socket ) ,
@@ -189,7 +189,7 @@ impl LinuxSandbox {
189189 cgroup_driver,
190190 } ;
191191
192- Ok ( LinuxSandbox ( Arc :: new ( inner ) ) )
192+ Ok ( sandbox )
193193 }
194194
195195 pub ( crate ) unsafe fn spawn_job (
@@ -198,7 +198,7 @@ impl LinuxSandbox {
198198 ) -> Option < jail_common:: JobStartupInfo > {
199199 let q = jail_common:: Query :: Spawn ( query. job_query . clone ( ) ) ;
200200
201- let mut sock = self . 0 . zygote_sock . lock ( ) . unwrap ( ) ;
201+ let mut sock = self . zygote_sock . lock ( ) . unwrap ( ) ;
202202
203203 // note that we ignore errors, because zygote can be already killed for some reason
204204 sock. send ( & q) . ok ( ) ;
@@ -211,7 +211,7 @@ impl LinuxSandbox {
211211
212212 pub ( crate ) unsafe fn poll_job ( & self , pid : Pid , timeout : Option < Duration > ) -> Option < ExitCode > {
213213 let q = jail_common:: Query :: Poll ( jail_common:: PollQuery { pid, timeout } ) ;
214- let mut sock = self . 0 . zygote_sock . lock ( ) . unwrap ( ) ;
214+ let mut sock = self . zygote_sock . lock ( ) . unwrap ( ) ;
215215 sock. send ( & q) . ok ( ) ;
216216 match sock. recv :: < Option < i32 > > ( ) {
217217 Ok ( x) => x. map ( Into :: into) ,
@@ -222,24 +222,18 @@ impl LinuxSandbox {
222222
223223impl Drop for LinuxSandbox {
224224 fn drop ( & mut self ) {
225- match Arc :: get_mut ( & mut self . 0 ) {
226- // we are last Sandbox handle, so we can drop it
227- Some ( _) => ( ) ,
228- // there are other handles, so we must not do anyhing
229- None => return ,
230- } ;
231225 // Kill all processes.
232226 if let Err ( err) = self . kill ( ) {
233227 panic ! ( "unable to kill sandbox: {}" , err) ;
234228 }
235229 // Remove cgroups.
236230 if std:: env:: var ( "MINION_DEBUG_KEEP_CGROUPS" ) . is_err ( ) {
237- self . 0
231+ self
238232 . cgroup_driver
239- . drop_cgroup ( & self . 0 . id , & [ "pids" , "memory" , "cpuacct" ] ) ;
233+ . drop_cgroup ( & self . id , & [ "pids" , "memory" , "cpuacct" ] ) ;
240234 }
241235
242236 // Close handles
243- nix:: unistd:: close ( self . 0 . watchdog_chan ) . ok ( ) ;
237+ nix:: unistd:: close ( self . watchdog_chan ) . ok ( ) ;
244238 }
245239}
0 commit comments