On Mon, Jun 13, 2022 at 06:53:01PM +0300, Sergei Shtepa wrote: > Description of the struct big_buffer, which is used to store > sufficiently large amounts of data, such as a CBT map, and functions for > working with it. There are systems on which quite often the kmalloc() > memory allocation function of several hundred kilobytes ends with an > error code, and it is impossible to use virtual memory when handling an > I/O unit, since a page fault situation is possible. A simple array of > pages solves this problem. FYI, vmalloc can now be used in a GFP_NOIO context by using memalloc_noio_save / memalloc_noio_restore, which could be used to simplify this a lot.