e3b7df65 |
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, |
fff9289b |
10 | the destructor member of the struct sk_buff is available to the aoe |
e3b7df65 |
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. |