X6 processor family.
aboutsummaryrefslogblamecommitdiffstats
path: root/drivers/md/raid5.c
blob: 3380372c0393e7262b95a611c92aa7da659d997b (plain) (tree)
1
2
3
4
5
6
7
8
9



                                                                            
                                                  
  


                                                                         










                                                                       








                                                                           

                                                                        


                                                                              
                                                              








                                                                            
 
                         
                          
                          
                           
                         
                        
                           
                      
                       
                            
               
                  
                  
                   
 








                                                
                                 
                                                                       

                                             
                                                                                



                                                      






                                                                               
                                                                                  

                               







                                                                       
 
  

                                                                          
   
                                                             
 

                                                                

 
                                                              
 

                                                                

 
                                                               
 

                                                                

 

                                                                  
 

                                                                
 



                                                            

 
                                                                          
 

                                                                

 


                                                  



                                                        




                                        




                                                           
 




                                                                      

                                                             
 
                          
 
                           
                           
                              
                                      
                              
                                          
                            
                           


                    



                                            



                                        
                                 



                               
                                                   
 






                                                           
                                                                          
 


























                                                                            


                 
 





                                                                         

                                                  
                                            
                            
 





                                                                  

 
                                                      
 

                                                
 
                                  

 
                                                                           
 
                                                              
 

                                                
 
                                      



                                                                   
                                                               



                                      










                                                        
                                                  


                       
                                           
 
                                    



                                       
                            


         
                                               

              
                                           
 
                                   









                                                       
                                                                           
                                                                              
                                                    
 
                                                                              
 
                                            
              
 

                                                    
                                             
 
                                                     


                                                
 
                                                     
                                                                            
                            
                                                   

                      

                                    

                                                
                                                                               
                                                       
                                                                            
                                                                              
                                                                     
                                                                 
                                   

                               
                                                   



                              
                                                                              
                                                          

                               
                              
 
                                                                             
                                                                     
                                                                         
                                  
                                                                             


                    












                                                              
                                             
 
                                
              



                                                         
                                                                            

                                                                           

















                                                                             

                                                          
                        
                      
                                                
                                                                            

                                                                           
                                                            
                                    








                                                                           
                                            

                          












                                                                  




                                          
                           
                                                       
                                                           


                               
                                                                          



                                          
                                                          
                                                                    
                                                                      
                                                                              








                                                                                        

                                                                                       

                                                                                 
                                                      

                                                           
                                                                  

                                                      
                                                            

                                                                                     


                                                                          

                                                                            

                                                        










                                            




















                                                                      



                                                   
 
                                                                           
 
                                            





                                 
                                     

                                                    




                                                                              
                                                                    
                                                  
                                                                              
                                  




                                                                 
                                 

                                                                     

                                     
                                                                        

                               

                                 
                                                                

                                                                 


                                                               
                                                                    





                                                                           


                                            


                                                                 
                        
                                                                              


                                             
 



                                                           



                                                             

                                  
                                                                     

                                                                          



















                                                                               





                                                                   







                                                                             
                           

                                                                     

                                                                         

                                                               

                                                                             
                                                                         

                                               





                                                                          


                                                                        
                                                         
                                       



                                                              

                                                                             
                                                 

                            

                                                                     









                                                                          





                                                                            








                                                               
                                       
















                                                                              
                                       
                                      




                                                                       
 



                                                                
                                           
                                      














                                                               

                                                   

                                                                              
                                                                           

                                                                           
                                                                              
                 


                                          











                                                       
              
 
                                               




                                                

                                                                   

                                                                   
                                      

                                                                   
                                               
 





                                                                     
                                                                        


                                                                 



                                           
                                                  


                             
                                           





                                                   
                                       

              
                                               





                                                         
                                                        

                                                      
                                                          









                                                                       

                                                                                     

 
                                                                    
 
                          
 

                       
 
                               


                                                       

 
                                                       

                                                 
 
                                               

                                                
                                                     
                                                 
                                                  
 


                                                             



                                           








                                                                              
 
                              
                                                  




                                             
                                       


                                               
                                                                  







                                                            
                                                                              
                                                                              
                                 
                                                                                     
            
                                                                                   
 


                  

















                                                                           
                               








                                                                            
 
                              



















                                                                       
            















                                                                              

                                                                










                                                                                  

                                                                                


                                                                             
 


                  




















                                                                            
                                                                  


                                                         
                                 












                                                                            












                                                                         


                                                                        
                                                                              


















                                                                               



                                                                               



                                                                           


                                                                      


                                                                        
                













                                                                                 



         



                                                      
                                               
                                                


                                       

                                                                   
 
                              
                                                  
                                              
                                       



                                                                         
                                               




                                                                       
                                                        


                                                      
                                                                            
                                                                             
                                                                           




                                       
                                                                            

                              
              
 
                                               




                                                
 
                                                                    

                                        
                                                        



                                                    
                                                          


                                                               

                                                                         

                                                                        
                                                             
                                                                         
                                    

                                                                               







                                                                    
                                                           

                                                 



                                
                                                        
 
                                               

                                                
                                
                                                               
                                                               
                                                                   
         
 

                                                
 
                                                                 

                                                                  

                                                                 

                                                                
                 

         







                                                                              





                                           

                                                                         
 
                              
                                                  
                                       

                                              
                       
                            
 
                                               

                                                







                                                             



                                                            


                                                                    

                                                                          














                                                                    




                                                                 
                              



                                                                         
                                                                           
                                                    



                                                                                     

 





                                                                         
                     


                                                                                







                                                             





                                                                






                                                                              




                                                     
 
                                               

                                                
                                                   



                                           
                                                                                
 
                              


                                
                                                  
                                           
                                       

                  
 
                                               

                                                


                                        
                                


                                                    

         

                                                       
                                                                     
                                                              
 
                               

                                                                                   

 











                                                                                             
 
                               



                                                                                  

 
                                                                             


                                                    
                                            
                                

                                    
 

                                                
                                                        



                                    
                                                            









                                                                             

                                         
 
                                                     
                                                    
 
                                                         
                                              


                                





                                                             
 









                                                               
 





                                                                          
                  

 





























                                                                               
                                               

                               
                                                             

                         
 
                             


                                                   
 

                                         

                                   










                                                      
                                                     
 
                              
                                                                    
 







                                                                       

                                                                   
                                                                                        
                                           


                              
                               
                     
                                           
                                 

                 
 





















                                                                              
                                                           






                                                                         
                                                                           


















                                                                              
                          
                
                              




                                                      


                                          
 


                                                                                           
                                           



                                                
                                                        


                              
                                      


                                                            
                                                  





















                                                                                   
                                      













                                                                     
                                              









                                                                       


















                                                                 



                                                                           
 















                                                                      
 
                                               


                               




                                            
                                        
                           




                                              
                                               



                                     

                                                     


                                
                                                              
 
                                                
                                            
                                 
                                                             
                              
                                    
                   




                                          

                                                                           


                          
                       
         
                                                     




                                                                              
                                                  
                  
                                           
 



                                                       
                       
                                                        
                                                                



                                                                     




                                                                    
                                                      
                                                         
                                                                            

                                                                   


                                                                       

                                                          
                
                                                          
                              
                                
 
                                                          
                                               





                                                                               
                                                      
                                     

                                                                       




                                                                         
                                                      
                                     
                                                                     
                                       
                                    




                                                                         
                                                      
                                     
                                                          
                                                
                                           
                                                                                        
                                                         


                                  




                                                                             
                      

                                                                   




                                                                            
                 
         
                                            


                                                

 
                                                              
 
                                                
                                            
                                 
                                                
                                                             

                           
                            
 


                                                   
                              


                                                          







                                                                     


                              
                                                                        



                                                                           
                       

         










                                                                    


                                                                             





                                                                 
 

                                                                     
                                           
                           

 
                                                                             
        
                                                                          






                                        
                                 
                                     
 






                                         
                       
                                                       

 
                                                            

                              
                                             
                            
                                            
 





                                                          
                                       








                                                                    
 




                                                                       
                                                                            

                                                               
 
                                 
                              
                                  
                           
                           
                            

                                                   

                                                                   


                                                             







                                                                          



                                    

                                                 
                         


                                                                       
                             

                             
                                    

                      
                                    
                                               
                                                                              
                                              


                                                
                                                                 
                                              


                                              
                                                                              
                                                                      

                                               
                                                                 
                                                                      
                              






                                            
                        
                              



                      
                                    
                                               
                                                                                  

                                                     
                                                               

                                                     


                                                               
                                                                 

                                                     
                                                               

                                                     


                                                               
                                                                                  

                                                                      

                                               
                                                                 

                                                                      
                              














                                                                       
                                                                 





                                                               
                                       






                                                                     

                                                                                  





                                                               
                                       



                                                                      
                                                                                  

                                                                        
                                       



                                                                          
                                                                                





                                                  
                                                                   





                                                
                                                                                




                                                                          
                                                                   









                                                                          
                        
                              

                      

         


                                    
                                            
         







                                                                         
                                                                            
 
                                            

                                                         
                                                

                                                                   

                                                   

                         

                               
                          
                               
 
 

                                                                 
 




                             
                                    










                                                




                                        
                        
                              


                      
                                    
                                                        
                                    

                                                



                                                       













                                                        





                                                   
                                                                    

                                                       





                                                        














                                                    
                        
                              

                      


                                               
                                                                   
 
                                                    
                                                              

                                                                               

                                                                                 





                         
           
                                                                            
                                             

                                                      
                                            
                                






                                                                              



                                                                            
 
                                                                





                                                                
                                                                   

                                                                            
                                            

                         
                                                            
                                                                             
                                                                       
                
                                   


                                                                           
                                                                           

                                                             
                                                                





                                                        

                                                                  

                                                                      

                                                                    
                                            



                         
                                                                       



                                                       
                    
 








                                                     
                                                                 
                                                         
                                           
 
 

                                                      
                                                




                                                                                           
                                            
                         
 
                                                       


                                                  








                                                                               
                       
                                               
                                 

                                       








                                                                               
                                                             


                                   
                                        
 












                                                                          



                                                                
                                          






                                                                  



                                                    
                                          


                 
                                             
 
                                                                              
                                                   
 
                               
                                                                          
                   
                                                                 
                                                                            
 

                                                                  
                                                               
                                      
                                          

 
           
                                                                 








                                                                       
                                             


                                                                    


                                                              
                                          







                                                                    
                 
                                                


                                           
                                                  
                       
                                       







                                                                                
                                                               





                                                          



                                                                        







                                                                             
                                                               






                                                          





                                                                       
                                                        

                                                 
                                                          

                                                                              




                                                                           
                                                                       





                                                                 


                                                                        



                                                                             

         


                                                                    

 
           
                                                               




                                               

                                              
                         
                                                             


                                                                    
                                                                   

                                                  






















                                                                      
         
                                                          

 















                                                             
                                                                        


                                                                              
                                                       
   

                                                                           
 
                                               

                                                               
 
                                                                  




                                                                      
                                                            

                                                   


                                                                           





                                                                             

                                                                    

                                                                             
                           







                                                                         





                                                                                












                                                                        
                         


















                                                                          

                 




                 
                                                                         
   


                                                           









                                                                            
                                                         
                                      



                                           
                            



                                                                      
                                                          








                                                                  
                                                                  
                                                                  

                                                                      
                                                                          

                                                                                




                                                                             
                                                                                





                                                                          

                                                                                
                                                                                
                                                   
                         

                                                                   



                                                                    

 
                                                       


                                                               

                                












                                                                              


                                           


                                                                                         
                                       



                                                                            

                                                               







                                                                              


                                                                    



                                               
                                                    







                                                                         

                                                                     


                                                                                
                                                                  









                                                                            
                                    
                                                                       
                        


                                                                   
                                                                 
                                                                
                                                                   



                                                                           

                                                                                
                                                                  









                                                                            
         


                                                                

                                                                              

                                                                             


                                                                              


                                                                            
                                                            

 
                                                                              

                                                                       
                                 
 
                                           
 


                                                                          
                                     
                                                     

                                                                  
                                                                           
                                      
                              
                 
                                                 








                                                                       
 
                                                                          



                                                            
                            
                                                   
 
                                                       
                                                   















                                                                               
                                                                        




                                                           
                                                                                      




                                                                                
                                                                        



                                                                                
                                                     










                                                                             



         
                                                                              
                                                              
                                            
 
                                
                                
                          



                                           
 





                                                                 


                                                                           
                                               
                                                                         


                                                                                
                                                          
                 
                                                    
                                                                            

                                                                  



                                                                     
                 
 

                                                               
 



                                                                           
                 






                                                                        

                 




                                                   
 


                                                                       

                                                             
                                                    
                   
                                                                                 
                                     
                                                         




                                                           
                                                         



                                                           
                                                                   




                                                           
                                                                   







                                                           




























                                                                                
                                                                                      

































                                                                                   


         
                                                                                





                                                                        
                                                  

                                                    
                                                         
                                      
                                                
                                                       
 
                                                                

                                                                         
                                                                  











                                                                              

                                                                 
                                                                            
                                                                
                                                                             
                                                   
 



                                                                      
                                                       






                                                                               
 
                 




                                                               
 



                                         

                                                                   
                    

                                                            



                                               
   
 
                                                                               
 
                                            
                              

                          
                            
 

                                 



                                                                  
 
                                                         
                        
                              
                                     


                                   
 
                                  
 
                                                                               

                                                                  







                                                                        
 
                                           



                                                       
                                                            

                                               
                 
 
                                                       
                                     
                                     
                                     
                                   
                                      
                                                                 
                                                   
                 
                                 
                                     









                                                                           

                                                                     


                                                                    

                                                           











                                                                              
                 


                                                  

                                              

                                                                      






                                                                          
                                                        
                                                                              
                                                               








                                                                               
                                                                   






                                                                        
                                                         
                                                               


                                                                      
                                                                 




                                                                        
                                                         
                                                               


                                                                    








                                                                        
                                                        


                                                                           
                 


                                                          


                                                             

                                                                    
                 
         



                                                                       
                                                                             




                                                                          

                                                                              



                                         
                          




                                                 
                                            
              

                              
                                  

                                             
                                                               
















                                                                     
 
                               
 




                                                   

                                                             
                                                             



















                                                                          




                                                                                
                                            

                                                         
 












                                                                              

                                                                            
                                         

                                                                            


















                                                                             

































                                                                              






















                                                                               
 













                                                                           




























                                                                           


























                                                                               
 















                                                                           
 
       
                                                      











                                                                
 

                                        
                                             








                                                                             


                                                                           
                                                                        

                                                                    

                                                                               


                                                                       
                                                                      
                                                                        

                                                                    

                 


                                                
                           
 
                                   
                                                                               
                                                                            







                                                                
                               
 
                                                    

 
                                                       









                                                                                 
                                                                  
                 
         

 
                                                   












                                                                                        
                                                     
 
                                             



                                                              
 








                                                     



                                                
                                   



                                                
 


                                                             


                                                            
 
                                           
                                                                        
                
                                                          
                                                     
 
                                      

                                                                                

                                                            







                                                                                     
 
                                                                  

                                                                        
                                                          

                                                     

                                                            




                                                               


                                                                  
                                                                












                                                          
                                                             









                                                
                                                            
                                   



                                                                          
                                                                                 






                  




                                                                        
                                                        

                                              
                            
                            
                                                             
                             
 
                    
 

                                       

                              



                                            
                                      

                                                                     
                       


         
                                                                            

                                        

 

                                        
                                                              
 
                                                    

                                    
                                                         











                                                                          
                                                                         
 
                                             
                   
                             
                             
                            

                                                  
                                                               


                         
                                                        
           
                                                              










                                                                       

                                                                              
                                                                   
 
                                                                    
                        










                                                                 


                                   

                                              


                                                            
 



                                                                                




                                                      


                                                                          






                                                                      



                                               
                                  



                         









                                                                               
                                                                     








































                                                                               
 























































                                                                                  

















































































                                                                           
                                                              
 
                                             
                   


                                             
                                        
                      
 

                                              
                       

         
                                  
 
                         
                                                    
                                          
                       
 




                                                



                                                                                 
 

                                                                               
                             
 
              
                             
                                                                                   
                                                                    
                                                                        

                                                                        
                                                                        



                                                                          
                                                          
                                                    

                                                                         

                                             
                                                            

                                                                             




                                                                            

                                                            
 

                                                                       
                                                                 
                                                                             


                                                            
                                                                  
                                                                
                         
                                                 
                                                                                    





                                                                                   


                                                                  
                                                            

                                                                              




                                                                         
                                                   


                                                   
 
                                          
                                                                  

                                                                 









                                                                          

                                           

                                                                     
                                                                  

                                                                               

                                                   
                                                                




                                                                 

                                                              
                                                     

                                                                                 
                                                       





                                                                            
         
 
                                                    
                             
 
                                  
                                            
 
                                 
         

 
                                                                                  
 
                                                                                      
 








                                                                     
                                             
                               
                                           


                                                                   

                   
                                            
                             
                            
                                 
 

                                                                           
                                               


                                                                       
                                                       

                                                           
                                                      
                                

                                                                           


                                         

         



                                                                    

                                                            
            
                                                       
 




                                                                     
           
                                          
                                             

                                         
                                     
                                        
                                       
                                                                       
                                           
                                           
                
                                            

                                                                     
         
 














                                                                



                                                                            



                                                                              











                                                                                





                                                  
                                     


                                                                    


                                                                          
                                                                 
                                                         
                                                   
                                                       
                                                
                                                               

                                                  
                                                             

                                                    
                                                                   

         
                                 
                                                               
                      
                                     
                                                                     








                                                                     
                                               
                                            
                                         
                                                      
                                                          
                                                 





                                                                              
                                    


                                                                 
                                             

                                          
                                     
                                                                           
            
                                                                           





                                                                          
                      
                                                                        
                                                       
                     
                                                                         
                                                                  
                                                       

                                                     
                                             
                                                                    




                                                          







                                                                       


                                                                           
                                     

                                                                  


                                                                          
                                                                 
                                                         
                                                   





                                                                   
                                                             

                                                    
                                                                   
         
                               


                                
                                                                                                         
 
                                             
                               
                                                 
                             

                               
 
                                      
                                                                        
 



                                                                      



                                                                          
                                         


                                                 

                         
 


                                                               

                                                                  
 





                                                                        
                                                               


                                                                        
                                                    
                                                           
                                                             
                             

                          
                                                                            
                                                                 





                                                                                               
 

                                                       
                                                         
                         
                                                                 
                                                                            
                                          
                   
                                                    
         



                                                                              
                                              




                                                                                  
                                                   
 
                          




                              
                                                                         











                                                                                       
                   





                                                                             
                                                           
                                                        


                                                                   


                                              
 
                                                                


                                                      
                                                              


                                                                
                                                                       



                                                            

                                                               
                                                                       



                                                            
                                                                
                                  


                                   
                                                          

                                       




                                                             























                                                                   
 






                                                                       
                                            
 
                                            
                                             
                    
                             
 
                                        

                                 
 
                              


                                          
                                
                               
 
                    


                                                                             
                                                            
                                                     
                                                          
                                                          

                                                 
                                             
 









                                                             

                                                         
                              
                                      
 

                                                             
                                                 

                                                          
         
                                                  


                                            
                                     
                               
 
                                          

 
              
                                                             
 
                                             



                                                                   

 
   
                                                   
 
                                             

                
                                       
                               
                                             




                                               


                                    
                                             



                                               




                                    
                                                                                
 
                                             












                                               

                   
 



                                                                     

              
                                                             
 
                                             






                                                                     
                                                                                
 
                                             
                          




                               
                                           
                               
                                       











                                                                       
                                                         
 
                                             



                                                                                 

 

                                                          
 
                                           

                                       
                                             

             


                                                   

  
               
                                                                 
 
                                             


                                             
                        
                                                                              
                                                                              
 
                                                         
                                                             


                                                           
                                                  










                                                        
                                        








                                                   
                                          

                             
                                




                                    



                                                                               
                                                                           





                                                                     
                                                            
                                                                    






                                                                                   

                                                                           
                                                            




                                                  
                                        
                                          
                                        







                         
                                                  


                                
                                              
                       

                







                                                    







                                                                                
                                                                   
                                


                                      
                                                                    











                                                               
                                                     
 
                            
                                         
                             
                               
                          
 


                                       
                                                                                 

                                                        
         



                                                             
                                                                        

                                                         
         
                                                             
                                                                                              

                                                         

         


                                                          

                                                                      
                                        

         
                                                          
                         
                           











                                                     
                                                               




                                                              
                                                                                   

                                                                     
 
                                                                   


                                          
 

                            
                                                                            
                           
 



                                          
                                                              
 
                                    
                                            
                                          



                                               








                                                          
 
                                                      
                                              


                                                                                    
                                                              

                                                                        

         
                                                       
                                       



                                       
                                            
                                          
                                                         
                                                  
                                                                

                                                
 
                                                                     
                                                                        

                                                       

                                                                          

                           

                                                                
 

                                                                    

                               
                                                                 
                                      

                           




                    
                                




                                        


























                                                                                 
                                   
 
                            
                              
                                   
                             
                                    
              

                                      
 
                                            
                                                          

                                                                  
















                                                                   

                                                          









                                                                          


                                            
                                                               
 
                                                       
                                                                          



                                                        





                                                                             
                                                                   
                                                                     

                                                                           

                                       
                                                                     

                                                             
                                                           


                                                                          
                                              





                                                                                 
                                                                            
                                                                                




                                                                        






                                                                               
                                                      

                                               
                                                   
                                                                               

                                                             
                                                                               
                                                                              


                                                                                     

                                       

                                                                       



                                                           
                                                                         
                                                
         
 




                                         


                                     
                                                



                                     










                                                                      
                                 






                                                                         
                                                      
                                        

                                 












                                                                                














                                                                 
 


                                                                       
                                              
 
                               
                                                                            
                                            
                                                                          


                           
                                                          
                                                          

                                                       
                                                   
                                              

                                             

                                                                          


                                              
                                                                                  


                                              

         
                                 

                                                                                     

                                                                            
            




                                                                            


                               
                                                  
                                                            





                                                                          
                                                                   

         

                                             

                                                   

                                                                 
                                   
                                                                           
                                      
                                                             
 
                           
                               
                                              








                                                                                
 
                                                                         
 

                                                                              
 



                                                                          




                                                                               



                                                              






                                                                              
 
                                            

                                                                     

                                                                      













                                                                               
                 








                                                                        
         
 

                 
                                             

                               
                              
                                                                                  


                    
                                    
 
                                             
 
                                             

                                                                   
                        

                                              


                 
                                                             
 
                                             

              

                                                                           
                                                                                             


                                                     
                                                                                           
                              

 
                                                  



                              
                                                   



                                         


                                                                     




                                                


                                                                       


         
                                                  

              
                                             
                              

                            


                                                


















                                                                                
                                                              
                                                           
                                                                       
                                
                                                                         

                 
                                                     
                                              
                                                          
                               
                     

 
                                                                       
 
                                             
                    
                                     
                               


                                                   





















                                                                  
                                                          









                                              













                                                                             





                               
                                                                    
 
                                             
                          

                            

                                        
 


                                                                
                                                          
                                              
                               
 

                                               

          

                                                             
           
                                         
                                             
                                                            


                                                  

                                       
                                                         
                                               
                                

                                                          
                                                          
                                 
                 


                                                  










                                                                 
    
                               
                   

 
                                                              







                                                                     
                         
                                                         


                                                                
                               





                                                                      
                                                           
                                        

                                                      
                                                        

                                                              
                                     
                                            


                 
                                                  








                                                                           
                                             



                                                               

                                                                                             






                                                                                  
                                             
 
                                             
 

                                                 
                                                             
                                             
                             












                                                                   
 
                                       
                               
 

                                                              

 
                                                   
 
                                             
                             
                       
                            
 
                                                            

                              


                                       


                               
                                    

                                                       
                                 
         
 
                                                                               




                                                                   





                                                                       
                                                                         



                                                                  
                                              

                                                     
                                               

                                                       

                                            




                                                                           
                                     



                                                                 



                                                                       



                                                                      
           
                                      
                                          


                                                                       
                                                           
                                                                         
                                                                               
                                            
                                                                          

                                                                         
                                                                         
                                 



                                                                               
                         
 



                                                                   
                                                             
                                                      

                                                                  
                                             
                                                         
                                               
 




                                                                  
                                                           



                                                                                 


                                                                  
                                                   
                                                    


                                                    
                                           



                                             
 


                                                             
                                            
 
 
                                                                  
                                     
 
                                                  
                                                             


                                                                  
                                                   
                                                    
                                                 



                                                                                      
                                         
                                                                               
                                                                             
                                                                


                                                                                           
         

 


                                                              
                                                     
 
                                             


                                                            


                                                                             
                                                        

                              


                                                              

                                                                       
                                   
                                                                           




                                                                         
                         
                 
                                                
                                                           

                                                    
                                             


         
                                                         
 
                                             

                       



                                                 

                                                  



                                                                
                                                          

                                                                                  
                                                                      
                                  
                                                    

                                                 





                                                  
                                                 


                                                    
 
 
 
                                                                  
 
                                                   
                         
 
                                                           
                                             

                                                                                               


                                        

                                                              
                                     
                                 










                                                        
                                                      




















                                                                     
                                             



                                 
                                                      































                                                        
 
                                                   
 



                                                                        
           
                                             
                                                 
 
                                                                                

                               
                                              
                                       
                                               
                                       
                                                         





                                                      
                                     



                                                            

                                    

                                                         


                                                       
         
                                    

 
                                                   
 
                                                 
 
                                                                                
                               
                            
                                              
                                       
                                                 
                                       
                                                         

                                                      
         

                             
                                    

 
                                                

                               
                                                                            


                                                                            
           

                                                       

                                                   




                                                       

                                                   



                                
                                                
 


                                                   
           

                                                       







                                                  
 
                                               
 
                                                













































                                                            
                                                













                                             
                                     
                                              
                                              
                                               
                                        
                                         
  
                                                

                                  
                            










                                             
                                     

                                              
                                               
                                        
                                         

  
                                                
 












                                             
                                     

                                              
                                               
                                        
                                         



                                  
                                                    


                                                    

 
                            
 
                                                      

                                                      




                        
                                                                          
                                             

                         

                           






                                                      
/*
 * raid5.c : Multiple Devices driver for Linux
 *	   Copyright (C) 1996, 1997 Ingo Molnar, Miguel de Icaza, Gadi Oxman
 *	   Copyright (C) 1999, 2000 Ingo Molnar
 *	   Copyright (C) 2002, 2003 H. Peter Anvin
 *
 * RAID-4/5/6 management functions.
 * Thanks to Penguin Computing for making the RAID-6 development possible
 * by donating a test server!
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * You should have received a copy of the GNU General Public License
 * (for example /usr/src/linux/COPYING); if not, write to the Free
 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

/*
 * BITMAP UNPLUGGING:
 *
 * The sequencing for updating the bitmap reliably is a little
 * subtle (and I got it wrong the first time) so it deserves some
 * explanation.
 *
 * We group bitmap updates into batches.  Each batch has a number.
 * We may write out several batches at once, but that isn't very important.
 * conf->seq_write is the number of the last batch successfully written.
 * conf->seq_flush is the number of the last batch that was closed to
 *    new additions.
 * When we discover that we will need to write to any block in a stripe
 * (in add_stripe_bio) we update the in-memory bitmap and record in sh->bm_seq
 * the number of the batch it will be in. This is seq_flush+1.
 * When we are ready to do a write, if that batch hasn't been written yet,
 *   we plug the array and queue the stripe for later.
 * When an unplug happens, we increment bm_flush, thus closing the current
 *   batch.
 * When we notice that bm_flush > bm_write, we write out all pending updates
 * to the bitmap, and advance bm_write to where bm_flush was.
 * This may occasionally write a bit out twice, but is sure never to
 * miss any bits.
 */

#include <linux/blkdev.h>
#include <linux/kthread.h>
#include <linux/raid/pq.h>
#include <linux/async_tx.h>
#include <linux/module.h>
#include <linux/async.h>
#include <linux/seq_file.h>
#include <linux/cpu.h>
#include <linux/slab.h>
#include <linux/ratelimit.h>
#include "md.h"
#include "raid5.h"
#include "raid0.h"
#include "bitmap.h"

/*
 * Stripe cache
 */

#define NR_STRIPES		256
#define STRIPE_SIZE		PAGE_SIZE
#define STRIPE_SHIFT		(PAGE_SHIFT - 9)
#define STRIPE_SECTORS		(STRIPE_SIZE>>9)
#define	IO_THRESHOLD		1
#define BYPASS_THRESHOLD	1
#define NR_HASH			(PAGE_SIZE / sizeof(struct hlist_head))
#define HASH_MASK		(NR_HASH - 1)

static inline struct hlist_head *stripe_hash(struct r5conf *conf, sector_t sect)
{
	int hash = (sect >> STRIPE_SHIFT) & HASH_MASK;
	return &conf->stripe_hashtbl[hash];
}

/* bio's attached to a stripe+device for I/O are linked together in bi_sector
 * order without overlap.  There may be several bio's per stripe+device, and
 * a bio could span several devices.
 * When walking this list for a particular stripe+device, we must never proceed
 * beyond a bio that extends past this device, as the next bio might no longer
 * be valid.
 * This function is used to determine the 'next' bio in the list, given the sector
 * of the current stripe+device