All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nigel Cunningham <nigel@tuxonice.net>
To: Nitin Gupta <ngupta@vflare.org>
Cc: Greg KH <greg@kroah.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Pekka Enberg <penberg@cs.helsinki.fi>,
	Hugh Dickins <hugh.dickins@tiscali.co.uk>, Cyp <cyp561@gmail.com>,
	Minchan Kim <minchan.kim@gmail.com>,
	Al Viro <viro@ZenIV.linux.org.uk>,
	Christoph Hellwig <hch@infradead.org>,
	Jens Axboe <jens.axboe@oracle.com>,
	Andi Kleen <andi@firstfloor.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	driverdev <devel@driverdev.osuosl.org>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/3] Add swap slot free callback to block_device_operations
Date: Fri, 07 May 2010 19:22:30 +1000	[thread overview]
Message-ID: <4BE3DBD6.7070707@tuxonice.net> (raw)
In-Reply-To: <1273217107-2023-3-git-send-email-ngupta@vflare.org>

Hi.

On 07/05/10 17:25, Nitin Gupta wrote:
> This callback is required when RAM based devices are used as swap disks.
> One such device is ramzswap 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.
>
> Signed-off-by: Nitin Gupta<ngupta@vflare.org>
> ---
>   include/linux/blkdev.h |    2 ++
>   mm/swapfile.c          |    4 ++++
>   2 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> index 6690e8b..413284a 100644
> --- a/include/linux/blkdev.h
> +++ b/include/linux/blkdev.h
> @@ -1287,6 +1287,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 --git a/mm/swapfile.c b/mm/swapfile.c
> index ecb069e..f5ccc47 100644
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -574,6 +574,7 @@ static unsigned char swap_entry_free(struct swap_info_struct *p,
>
>   	/* 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,9 @@ static unsigned char swap_entry_free(struct swap_info_struct *p,
>   			swap_list.next = p->type;
>   		nr_swap_pages++;
>   		p->inuse_pages--;
> +		if ((p->flags&  SWP_BLKDEV)&&
> +				disk->fops->swap_slot_free_notify)
> +			disk->fops->swap_slot_free_notify(p->bdev, offset);

Is this p->flags & SWP_BLKDEV logic reversed? (Don't you want the 
notifier called for devices that aren't backed by a block device?)

I also wonder whether leaving the p->flags & SWP_BLKDEV part out might 
be a good idea. Other potential notifier users?

Regards,

Nigel

  reply	other threads:[~2010-05-07  9:31 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-07  7:25 [PATCH 0/3] ramzswap: Eliminate stale data from compressed memory (v2) Nitin Gupta
2010-05-07  7:25 ` [PATCH 1/3] Add flag to identify block swap devices Nitin Gupta
2010-05-07  8:03   ` jassi brar
2010-05-07  8:16     ` Nitin Gupta
2010-05-07  8:56       ` jassi brar
2010-05-07  9:24         ` Pekka Enberg
2010-05-07  9:32   ` Nigel Cunningham
2010-05-07  7:25 ` [PATCH 2/3] Add swap slot free callback to block_device_operations Nitin Gupta
2010-05-07  9:22   ` Nigel Cunningham [this message]
2010-05-07  9:48     ` Nitin Gupta
2010-05-07 10:40       ` Nigel Cunningham
2010-05-07  7:25 ` [PATCH 3/3] ramzswap: Handler for swap slot free callback Nitin Gupta
2010-05-07  7:44 ` [PATCH 0/3] ramzswap: Eliminate stale data from compressed memory (v2) Pekka Enberg
2010-05-07 14:51   ` Linus Torvalds
2010-05-07 19:55 ` Andrew Morton
2010-05-08  4:05   ` Nitin Gupta
2010-05-08  6:29   ` Pekka Enberg
2010-05-08  6:54     ` Nitin Gupta
2010-05-08  7:05       ` Pekka Enberg
2010-05-08  6:57     ` Nitin Gupta
2010-05-08  7:26       ` Pekka Enberg
2010-05-08  7:32         ` Nitin Gupta
  -- strict thread matches above, loose matches on Subject: below --
2010-05-17  5:32 [PATCH 0/3] ramzswap: Eliminate stale data from compressed memory (v2 resend) Nitin Gupta
2010-05-17  5:32 ` [PATCH 2/3] Add swap slot free callback to block_device_operations Nitin Gupta
2010-05-17 12:01   ` Minchan Kim
2010-05-18  3:31     ` Nitin Gupta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BE3DBD6.7070707@tuxonice.net \
    --to=nigel@tuxonice.net \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=cyp561@gmail.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=greg@kroah.com \
    --cc=hch@infradead.org \
    --cc=hugh.dickins@tiscali.co.uk \
    --cc=jens.axboe@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=minchan.kim@gmail.com \
    --cc=ngupta@vflare.org \
    --cc=penberg@cs.helsinki.fi \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@ZenIV.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.