The patch titled mm: add swap slot free callback to block_device_operations has been removed from the -mm tree. Its filename was mm-add-swap-slot-free-callback-to-block_device_operations.patch This patch was dropped because it was nacked The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: mm: add swap slot free callback to block_device_operations From: Nitin Gupta <ngupta@xxxxxxxxxx> This callback is required when RAM based devices are used as swap disks. One such device is ramzswap[1] which is used as compressed in-memory swap disk. For such devices, we need a callback as soon as a swap slot is no longer used to allow freeing memory allocated for this slot. Without this callback, stale data can quickly accumulate in memory defeating the whole purpose of such devices. Another user of this callback will be "preswap" as introduced by "Transcendent Memory" patches: http://lwn.net/Articles/367286/ (I intend to integrade preswap with ramzswap). [1] ramzswap: http://code.google.com/p/compcache/ Signed-off-by: Nitin Gupta <ngupta@xxxxxxxxxx> Signed-off-by: Hugh Dickins <hugh.dickins@xxxxxxxxxxxxx> Acked-by: Hugh Dickins <hugh.dickins@xxxxxxxxxxxxx> Cc: Greg KH <greg@xxxxxxxxx> Cc: Pekka Enberg <penberg@xxxxxxxxxxxxxx> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx> Cc: Jens Axboe <jens.axboe@xxxxxxxxxx> Cc: Andi Kleen <andi@xxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/blkdev.h | 2 ++ mm/swapfile.c | 3 +++ 2 files changed, 5 insertions(+) diff -puN include/linux/blkdev.h~mm-add-swap-slot-free-callback-to-block_device_operations include/linux/blkdev.h --- a/include/linux/blkdev.h~mm-add-swap-slot-free-callback-to-block_device_operations +++ a/include/linux/blkdev.h @@ -1310,6 +1310,8 @@ struct block_device_operations { unsigned long long); int (*revalidate_disk) (struct gendisk *); int (*getgeo)(struct block_device *, struct hd_geometry *); + /* this callback is with swap_lock and sometimes page table lock held */ + void (*swap_slot_free_notify) (struct block_device *, unsigned long); struct module *owner; }; diff -puN mm/swapfile.c~mm-add-swap-slot-free-callback-to-block_device_operations mm/swapfile.c --- a/mm/swapfile.c~mm-add-swap-slot-free-callback-to-block_device_operations +++ a/mm/swapfile.c @@ -574,6 +574,7 @@ static unsigned char swap_entry_free(str /* free if no reference */ if (!usage) { + struct gendisk *disk = p->bdev->bd_disk; if (offset < p->lowest_bit) p->lowest_bit = offset; if (offset > p->highest_bit) @@ -583,6 +584,8 @@ static unsigned char swap_entry_free(str swap_list.next = p->type; nr_swap_pages++; p->inuse_pages--; + if (disk->fops->swap_slot_free_notify) + disk->fops->swap_slot_free_notify(p->bdev, offset); } return usage; _ Patches currently in -mm which might be from ngupta@xxxxxxxxxx are linux-next.patch mm-add-swap-slot-free-callback-to-block_device_operations.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html