Messages in this thread | | | Date | Thu, 11 Mar 2010 07:22:05 +0000 (GMT) | From | Hugh Dickins <> | Subject | Re: [PATCH 0/3] ramzswap: Eliminate stale data in compressed memory |
| |
On Fri, 5 Mar 2010, Nitin Gupta wrote:
> ramzswap driver creates RAM based block devices which can be > used (only) as swap disks. Pages swapped to these disks are > compressed and stored in memory itself. > > However, these devices do not get any notification when a swap > slot is freed (swap_map[i] reaches 0). So, we cannot free memory > allocated corresponding to this swap slot. Such stale data can > quickly accumulate in (compressed) memory defeating the whole > purpose of such devices. > > To overcome this problem, we now add a callback in 'struct swap_info_struct' > which is called as soon as a swap slot is freed. > > Adding handler for this callback: > swapon notifier --> set_swap_free_notify(swap_type, fn) > > Removing handler: > swapoff notifier --> set_swap_free_notify(swap_type, NULL) > > > Alternative approaches: > 1) Add callback directly in 'struct block_device_operations' but > that is considered too hacky. > 2) Use swap discard mechanism: It involves unncessary overhead of > allocating 'discard bio' requests and its too slow to serve ramzswap > needs. > > drivers/staging/ramzswap/ramzswap_drv.c | 91 +++++++++++++++++++++++++++++ > drivers/staging/ramzswap/ramzswap_drv.h | 1 + > drivers/staging/ramzswap/ramzswap_ioctl.h | 1 + > include/linux/swap.h | 16 +++++- > mm/swapfile.c | 78 ++++++++++++++++++++++++ > 5 files changed, 185 insertions(+), 2 deletions(-)
This is one of the various solutions I disliked already, isn't it?
To me this is just a more convoluted and obscure variant of the block_device_operations swap_slot_free_notify patch you had in mmotm, which Linus has rejected.
I admit, I did not understand at all what Linus was proposing with readpage, writepage and address_space_operations: I kept quiet in the hope that you'd understand where I didn't!
Hugh
| |