Skip to content

Commit

Permalink
Staging: ramzswap: Handler for swap slot free callback
Browse files Browse the repository at this point in the history
Install handler for swap_slot_free_notify callback which is called
when a swap slot is no longer used. This handler immediately frees
memory allocated corresponding to the given swap slot.

Signed-off-by: Nitin Gupta <ngupta@vflare.org>
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Acked-by: Nigel Cunningham <nigel@tuxonice.net>
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Reviewed-by: Minchan Kim <minchan.kim@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Nitin Gupta authored and Greg Kroah-Hartman committed May 18, 2010
1 parent b3a27d0 commit 107c161
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 14 deletions.
5 changes: 0 additions & 5 deletions drivers/staging/ramzswap/TODO

This file was deleted.

22 changes: 13 additions & 9 deletions drivers/staging/ramzswap/ramzswap_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -335,14 +335,6 @@ static int ramzswap_write(struct ramzswap *rzs, struct bio *bio)

src = rzs->compress_buffer;

/*
* System swaps to same sector again when the stored page
* is no longer referenced by any process. So, its now safe
* to free the memory that was allocated for this page.
*/
if (rzs->table[index].page || rzs_test_flag(rzs, index, RZS_ZERO))
ramzswap_free_page(rzs, index);

mutex_lock(&rzs->lock);

user_mem = kmap_atomic(page, KM_USER0);
Expand Down Expand Up @@ -690,9 +682,21 @@ static int ramzswap_ioctl(struct block_device *bdev, fmode_t mode,
return ret;
}

void ramzswap_slot_free_notify(struct block_device *bdev, unsigned long index)
{
struct ramzswap *rzs;

rzs = bdev->bd_disk->private_data;
ramzswap_free_page(rzs, index);
rzs_stat64_inc(rzs, &rzs->stats.notify_free);

return;
}

static struct block_device_operations ramzswap_devops = {
.ioctl = ramzswap_ioctl,
.owner = THIS_MODULE,
.swap_slot_free_notify = ramzswap_slot_free_notify,
.owner = THIS_MODULE
};

static int create_device(struct ramzswap *rzs, int device_id)
Expand Down

0 comments on commit 107c161

Please sign in to comment.