<div dir="ltr">See inserted.<div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 22, 2018 at 4:31 PM, NeilBrown <span dir="ltr"><<a href="mailto:neilb@suse.com" target="_blank">neilb@suse.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, Apr 02 2018, Jinshan Xiong wrote:<br>
<br>
</span><span class="">> Hi Neil,<br>
><br>
> Sure. Patches are attached for your reference.<br>
><br>
> The first patch is to bring llite_lloop driver back; the 2nd fixes some<br>
> bugs and the 3rd one adds async I/O. The patches are based on 2.7.21, but I<br>
> don't think it would be difficult to port them to master. Anyway, it's just<br>
> for your reference.<br>
><br>
> This is a piece of work in progress, please don't use it for production.<br>
<br>
Thanks,<br>
</span>just one quick comment at this stage:<br>
<br>
<br>
>  .PP<br>
> +.SS Virtual Block Device Operation<br>
> +Lustre is able to emulate a virtual block device upon regular file. It is necessary to be used when you are trying to setup a swap space via file.<br>
<br>
We should fix this properly.  Creating a loop device just to provide<br>
swap is not the best approach.<br>
The preferred approach for swapping to a networked filesystem can be<br>
seen by examining the swap_activate address_space_operation in nfs.<br>
If a file passed to swap_on has a swap_activate operation, it will be<br>
called and then ->readpage will be used to read from swap, and<br>
->direct_IO will be used to write.<br>
<br>
swap_activate needs to ensure that the direct_IO calls will never block<br>
waiting for memory allocation.<br>
For NFS, all that it does is calls sk_set_memalloc() on all network<br>
sockets that might be used.  This allows TCP etc to use the reserve<br>
memory pools.<br>
Lustre might need to pre-allocate other things, or make use PF_MEMALLOC<br>
in other contexts, I don't know.<br></blockquote><div><br></div><div>That was a major problem when I worked on loop back device initially. Lustre allocates memory from too many places to write something to OSTs, so it would take huge effort to reserve memory on the writeback path.</div><div><br></div><div>Jinshan</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
NeilBrown<br>
</blockquote></div><br></div></div>