@@ -514,7 +514,7 @@ impl SchedulingStateMachine {
514514 }
515515 self . total_task_count . increment_self ( ) ;
516516 self . active_task_count . increment_self ( ) ;
517- self . attempt_lock_for_task ( task)
517+ self . try_lock_for_task ( task)
518518 }
519519
520520 pub fn has_unblocked_task ( & self ) -> bool {
@@ -543,33 +543,7 @@ impl SchedulingStateMachine {
543543 self . unlock_for_task ( task) ;
544544 }
545545
546- #[ must_use]
547- fn attempt_lock_pages ( & mut self , task : & Task ) -> ShortCounter {
548- let mut blocked_page_count = ShortCounter :: zero ( ) ;
549-
550- for attempt in task. lock_attempts ( ) {
551- let page = attempt. page_mut ( & mut self . page_token ) ;
552- let lock_status = if page. has_no_blocked_task ( ) {
553- Self :: attempt_lock_page ( page, attempt. requested_usage )
554- } else {
555- LockResult :: Err ( ( ) )
556- } ;
557- match lock_status {
558- LockResult :: Ok ( PageUsage :: Unused ) => unreachable ! ( ) ,
559- LockResult :: Ok ( new_usage) => {
560- page. usage = new_usage;
561- }
562- LockResult :: Err ( ( ) ) => {
563- blocked_page_count. increment_self ( ) ;
564- page. push_blocked_task ( task. clone ( ) , attempt. requested_usage ) ;
565- }
566- }
567- }
568-
569- blocked_page_count
570- }
571-
572- fn attempt_lock_page ( page : & PageInner , requested_usage : RequestedUsage ) -> LockResult {
546+ fn try_lock_page ( page : & PageInner , requested_usage : RequestedUsage ) -> LockResult {
573547 match page. usage {
574548 PageUsage :: Unused => LockResult :: Ok ( PageUsage :: from_requested_usage ( requested_usage) ) ,
575549 PageUsage :: Readonly ( count) => match requested_usage {
@@ -612,14 +586,32 @@ impl SchedulingStateMachine {
612586 }
613587
614588 #[ must_use]
615- fn attempt_lock_for_task ( & mut self , task : Task ) -> Option < Task > {
616- let blocked_page_count = self . attempt_lock_pages ( & task) ;
589+ fn try_lock_for_task ( & mut self , task : Task ) -> Option < Task > {
590+ let mut blocked_page_count = ShortCounter :: zero ( ) ;
591+
592+ for attempt in task. lock_attempts ( ) {
593+ let page = attempt. page_mut ( & mut self . page_token ) ;
594+ let lock_result = if page. has_no_blocked_task ( ) {
595+ Self :: try_lock_page ( page, attempt. requested_usage )
596+ } else {
597+ LockResult :: Err ( ( ) )
598+ } ;
599+ match lock_result {
600+ LockResult :: Ok ( PageUsage :: Unused ) => unreachable ! ( ) ,
601+ LockResult :: Ok ( new_usage) => {
602+ page. usage = new_usage;
603+ }
604+ LockResult :: Err ( ( ) ) => {
605+ blocked_page_count. increment_self ( ) ;
606+ page. push_blocked_task ( task. clone ( ) , attempt. requested_usage ) ;
607+ }
608+ }
609+ }
617610
611+ // no blocked page means success
618612 if blocked_page_count. is_zero ( ) {
619- // succeeded
620613 Some ( task)
621614 } else {
622- // failed
623615 task. set_blocked_page_count ( & mut self . count_token , blocked_page_count) ;
624616 None
625617 }
@@ -635,7 +627,7 @@ impl SchedulingStateMachine {
635627 self . unblocked_task_queue . push_back ( task) ;
636628 }
637629
638- match Self :: attempt_lock_page ( page, requested_usage) {
630+ match Self :: try_lock_page ( page, requested_usage) {
639631 LockResult :: Ok ( PageUsage :: Unused ) => unreachable ! ( ) ,
640632 LockResult :: Ok ( new_usage) => {
641633 page. usage = new_usage;
0 commit comments