lkml.org 
[lkml]   [2010]   [Jan]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] [mmotm] comment on swap notify locking constraints
On Thu, 14 Jan 2010, Nitin Gupta wrote:

> A block device makes swap_slot_free_notify() callback
> when the last reference to a swap slot is dropped.
>
> This callback is made under swap_lock and often with
> lock for corresponding swapcache page also held. This
> is a note of warning for registered callback function
> which must meet these constraints.

You're right that the page lock of the corresponding swapcache page
may be held there, but that isn't what worried me enough to ask for
a comment: it's the page table lock (sometimes we call it pte lock),
a spinlock like the swap_lock, being held there that particularly
deserves comment. We don't want someone going to lots of effort
to avoid holding swap_lock there, only to find that effort wasted
because page table lock is also held.

Hugh

>
> Signed-off-by: Nitin Gupta <ngupta@vflare.org>
> ---
> include/linux/blkdev.h | 1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> index 14b95a3..e3dcff6 100644
> --- a/include/linux/blkdev.h
> +++ b/include/linux/blkdev.h
> @@ -1295,6 +1295,7 @@ 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 often page lock also held */

and page table lock

> void (*swap_slot_free_notify) (struct block_device *, unsigned long);
> struct module *owner;
> };
> --
> 1.6.2.5


\
 
 \ /
  Last update: 2010-01-14 16:17    [W:0.186 / U:0.040 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site