@@ -602,16 +602,16 @@ bool afs_select_fileserver(struct afs_operation *op)
602
602
goto wait_for_more_probe_results ;
603
603
604
604
alist = op -> estate -> addresses ;
605
+ best_prio = -1 ;
606
+ addr_index = 0 ;
605
607
for (i = 0 ; i < alist -> nr_addrs ; i ++ ) {
606
608
if (alist -> addrs [i ].prio > best_prio ) {
607
609
addr_index = i ;
608
610
best_prio = alist -> addrs [i ].prio ;
609
611
}
610
612
}
611
613
612
- addr_index = READ_ONCE (alist -> preferred );
613
- if (!test_bit (addr_index , & set ))
614
- addr_index = __ffs (set );
614
+ alist -> preferred = addr_index ;
615
615
616
616
op -> addr_index = addr_index ;
617
617
set_bit (addr_index , & op -> addr_tried );
@@ -656,12 +656,6 @@ bool afs_select_fileserver(struct afs_operation *op)
656
656
next_server :
657
657
trace_afs_rotate (op , afs_rotate_trace_next_server , 0 );
658
658
_debug ("next" );
659
- ASSERT (op -> estate );
660
- alist = op -> estate -> addresses ;
661
- if (op -> call_responded &&
662
- op -> addr_index != READ_ONCE (alist -> preferred ) &&
663
- test_bit (alist -> preferred , & op -> addr_tried ))
664
- WRITE_ONCE (alist -> preferred , op -> addr_index );
665
659
op -> estate = NULL ;
666
660
goto pick_server ;
667
661
@@ -690,14 +684,7 @@ bool afs_select_fileserver(struct afs_operation *op)
690
684
failed :
691
685
trace_afs_rotate (op , afs_rotate_trace_failed , 0 );
692
686
op -> flags |= AFS_OPERATION_STOP ;
693
- if (op -> estate ) {
694
- alist = op -> estate -> addresses ;
695
- if (op -> call_responded &&
696
- op -> addr_index != READ_ONCE (alist -> preferred ) &&
697
- test_bit (alist -> preferred , & op -> addr_tried ))
698
- WRITE_ONCE (alist -> preferred , op -> addr_index );
699
- op -> estate = NULL ;
700
- }
687
+ op -> estate = NULL ;
701
688
_leave (" = f [failed %d]" , afs_op_error (op ));
702
689
return false;
703
690
}
0 commit comments