待办事项

当分配一个 struct sk_buff 用于需要写入到 aoe 存储的数据时,存在死锁的可能性。如果数据是从脏页写入以释放该页,并且如果没有其他可用页面,则当 sk_buff 分配需要空闲页时可能会发生死锁。这种情况尚未观察到,但最好消除内存压力下死锁的任何可能性。

由于以太网上的 ATA 不会被内核的 IP 代码分段,因此 struct sk_buff 的析构函数成员可用于 aoe 驱动程序。通过使用内存池分配除前几个 sk_buff 之外的所有 sk_buff,并通过注册析构函数,我们应该能够有效地分配 sk_buff 而不会引入任何死锁的可能性。