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@xxxxxxxxxx> --- 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 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel