2005-04-18 22:00:21 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								There is a potential for deadlock when allocating a struct sk_buff for
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								data that needs to be written out to aoe storage.  If the data is
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								being written from a dirty page in order to free that page, and if
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								there are no other pages available, then deadlock may occur when a
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								free page is needed for the sk_buff allocation.  This situation has
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								not been observed, but it would be nice to eliminate any potential for
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								deadlock under memory pressure.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								Because ATA over Ethernet is not fragmented by the kernel's IP code,
							 | 
						
					
						
							
								
									
										
										
										
											2006-10-03 22:47:42 +02:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								the destructor member of the struct sk_buff is available to the aoe
							 | 
						
					
						
							
								
									
										
										
										
											2005-04-18 22:00:21 -07:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								driver.  By using a mempool for allocating all but the first few
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								sk_buffs, and by registering a destructor, we should be able to
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								efficiently allocate sk_buffs without introducing any potential for
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								deadlock.
							 |