1 TODO 1 TODO 2 ==== 2 ==== 3 3 4 There is a potential for deadlock when allocat 4 There is a potential for deadlock when allocating a struct sk_buff for 5 data that needs to be written out to aoe stora 5 data that needs to be written out to aoe storage. If the data is 6 being written from a dirty page in order to fr 6 being written from a dirty page in order to free that page, and if 7 there are no other pages available, then deadl 7 there are no other pages available, then deadlock may occur when a 8 free page is needed for the sk_buff allocation 8 free page is needed for the sk_buff allocation. This situation has 9 not been observed, but it would be nice to eli 9 not been observed, but it would be nice to eliminate any potential for 10 deadlock under memory pressure. 10 deadlock under memory pressure. 11 11 12 Because ATA over Ethernet is not fragmented by 12 Because ATA over Ethernet is not fragmented by the kernel's IP code, 13 the destructor member of the struct sk_buff is 13 the destructor member of the struct sk_buff is available to the aoe 14 driver. By using a mempool for allocating all 14 driver. By using a mempool for allocating all but the first few 15 sk_buffs, and by registering a destructor, we 15 sk_buffs, and by registering a destructor, we should be able to 16 efficiently allocate sk_buffs without introduc 16 efficiently allocate sk_buffs without introducing any potential for 17 deadlock. 17 deadlock.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.