Chris Li <chrisl@xxxxxxxxxx> writes: > On Thu, Mar 23, 2023 at 08:56:43AM +0800, Huang, Ying wrote: >> > We need to carefully design the swap cache that, when moving between >> > swap implementaions, there will be one shared swap cache. The current >> > swap cache belongs to swap devices, so two devices will have the same >> > page in two swap caches. >> >> We can remove a page from the swap cache for the swap device A, then >> insert the page into the swap cache for the swap device B. The swap >> entry will be changed too. > It is possible, however very tricky. > > Let's assume the swap entry in device A has more than one user. > e.g. Swap entry A1 on device A is shared by three different > process. It is installed in three PTE locations. With indirection, the swap ID (swap_desc index) will be installed in PTEs instead of the swap entry itself. Best Regards, Huang, Ying > When A1 page data > write to device B, gain a new swap entry B1. > > We will need to walk the three process page table to hunt down > PTE point to the swap entry A1, change that to B1. There will > be a short time window some processes have B1 and other processes > havee A1. If both of them trigger page fault to swap in the > page. You will have the same page in both A and B's swap cache. > It needs to be back by the same physical page. > > That seems to suggest that it needs to merge the swap cache look > up somehow. > >> >> We can allocate a swap entry for each swapped page in zswap. >> > >> > One thing to consider when moving page from zswap to swap file, is the >> > zswap swap entry the same entry as the swap file entry. >> >> I think that the swap entry will be changed after moving. Swap entry is >> kind of local to a swap device. While the swap desc ID isn't changed, >> that is why we need the indirection layer. > > Due to the above mentioned complication. I am also evaluating > a design have the zswap just share the same swap entry as the > underlying swap device. > > The price to pay is one extra look up in zswap. That is similar > to the current frontswap. > > > Chris