ecashin@coraid.com | e3b7df6 | 2005-04-18 22:00:21 -0700 | [diff] [blame] | 1 | There is a potential for deadlock when allocating a struct sk_buff for |
| 2 | data that needs to be written out to aoe storage. If the data is |
| 3 | being written from a dirty page in order to free that page, and if |
| 4 | there are no other pages available, then deadlock may occur when a |
| 5 | free page is needed for the sk_buff allocation. This situation has |
| 6 | not been observed, but it would be nice to eliminate any potential for |
| 7 | deadlock under memory pressure. |
| 8 | |
| 9 | Because ATA over Ethernet is not fragmented by the kernel's IP code, |
| 10 | the destructore member of the struct sk_buff is available to the aoe |
| 11 | driver. By using a mempool for allocating all but the first few |
| 12 | sk_buffs, and by registering a destructor, we should be able to |
| 13 | efficiently allocate sk_buffs without introducing any potential for |
| 14 | deadlock. |