Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 107c161b authored by Nitin Gupta's avatar Nitin Gupta Committed by Greg Kroah-Hartman
Browse files

Staging: ramzswap: Handler for swap slot free callback



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: default avatarNitin Gupta <ngupta@vflare.org>
Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Acked-by: default avatarNigel Cunningham <nigel@tuxonice.net>
Acked-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
Reviewed-by: default avatarMinchan Kim <minchan.kim@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent b3a27d05
Loading
Loading
Loading
Loading

drivers/staging/ramzswap/TODO

deleted100644 → 0
+0 −5
Original line number Diff line number Diff line
TODO:
	- Add support for swap notifiers

Please send patches to Greg Kroah-Hartman <greg@kroah.com> and
Nitin Gupta <ngupta@vflare.org>
+13 −9
Original line number Diff line number Diff line
@@ -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);
@@ -690,9 +682,21 @@ out:
	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)