[PATCH 1/3] Add flag to identify block swap devices

Nigel Cunningham ncunningham at crca.org.au
Fri May 7 09:32:44 UTC 2010


Hi again.

On 07/05/10 17:25, Nitin Gupta wrote:
> Added SWP_BLKDEV flag to distinguish block and regular file backed
> swap devices. We could also check if a swap is entire block device,
> rather than a file, by:
> S_ISBLK(swap_info_struct->swap_file->f_mapping->host->i_mode)
> but, I think, simply checking this flag is more convenient.
>
> Signed-off-by: Nitin Gupta<ngupta at vflare.org>
> ---
>   include/linux/swap.h |    1 +
>   mm/swapfile.c        |    1 +
>   2 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/swap.h b/include/linux/swap.h
> index 1f59d93..ec2b7a4 100644
> --- a/include/linux/swap.h
> +++ b/include/linux/swap.h
> @@ -146,6 +146,7 @@ enum {
>   	SWP_DISCARDING	= (1<<  3),	/* now discarding a free cluster */
>   	SWP_SOLIDSTATE	= (1<<  4),	/* blkdev seeks are cheap */
>   	SWP_CONTINUED	= (1<<  5),	/* swap_map has count continuation */
> +	SWP_BLKDEV	= (1<<  6),	/* its a block device */
>   					/* add others here before... */
>   	SWP_SCANNING	= (1<<  8),	/* refcount in scan_swap_map */
>   };
> diff --git a/mm/swapfile.c b/mm/swapfile.c
> index 6cd0a8f..ecb069e 100644
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -1884,6 +1884,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
>   		if (error<  0)
>   			goto bad_swap;
>   		p->bdev = bdev;
> +		p->flags |= SWP_BLKDEV;
>   	} else if (S_ISREG(inode->i_mode)) {
>   		p->bdev = inode->i_sb->s_bdev;
>   		mutex_lock(&inode->i_mutex);

The more I read your patches, the more I think either I'm seriously 
confused (entirely possible!) or you are.

Don't you want to distinguish RAM backed swap from swap that's either a 
partition or a file? If that's the case, you should also be setting 
SWP_BLKDEV in the S_ISREG part that follows iff the p->bdev is a regular 
file.

Regards,

Nigel



More information about the devel mailing list