Prev: [PATCH] x86/kvm: Show guest system/user cputime in cpustat
Next: fs: fat: use hex_asc_lo/hex_asc_hi instead of custom one
From: Hugh Dickins on 11 Mar 2010 02:30 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |