TODO¶
当为需要写入 AoE 存储的数据分配 struct sk_buff
时,存在潜在的死锁风险。如果数据是从脏页写入以释放该页,并且没有其他可用页,那么在为 sk_buff 分配需要空闲页时可能会发生死锁。这种情况尚未观察到,但最好消除内存压力下任何潜在的死锁风险。
由于以太网上的 ATA 不会被内核的 IP 代码分片,因此 struct sk_buff
的析构函数成员可供 AoE 驱动程序使用。通过使用内存池(mempool)分配除前几个 sk_buff 之外的所有 sk_buff,并注册一个析构函数,我们应该能够高效地分配 sk_buff 而不会引入任何死锁风险。