aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNitin Gupta <ngupta@vflare.org>2010-05-17 01:32:42 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-05-18 18:07:52 -0400
commitb27256439568950f30864ccecaeb6dfb588089d5 (patch)
tree03aaf3a415b65d5f8aa4eefb06f4cddaeb00f4b5
parentf4a68b9388c7f647ba2fd43faf69cad26ca03206 (diff)
swap: Add flag to identify block swap devices
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@vflare.org> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Acked-by: Nigel Cunningham <nigel@tuxonice.net> Acked-by: Pekka Enberg <penberg@cs.helsinki.fi> Reviewed-by: Minchan Kim <minchan.kim@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--include/linux/swap.h1
-rw-r--r--mm/swapfile.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/swap.h b/include/linux/swap.h
index 1f59d9340c4d..ec2b7a42b45f 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -146,6 +146,7 @@ enum {
146 SWP_DISCARDING = (1 << 3), /* now discarding a free cluster */ 146 SWP_DISCARDING = (1 << 3), /* now discarding a free cluster */
147 SWP_SOLIDSTATE = (1 << 4), /* blkdev seeks are cheap */ 147 SWP_SOLIDSTATE = (1 << 4), /* blkdev seeks are cheap */
148 SWP_CONTINUED = (1 << 5), /* swap_map has count continuation */ 148 SWP_CONTINUED = (1 << 5), /* swap_map has count continuation */
149 SWP_BLKDEV = (1 << 6), /* its a block device */
149 /* add others here before... */ 150 /* add others here before... */
150 SWP_SCANNING = (1 << 8), /* refcount in scan_swap_map */ 151 SWP_SCANNING = (1 << 8), /* refcount in scan_swap_map */
151}; 152};
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 6cd0a8f90dc7..ecb069e213d0 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1884,6 +1884,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
1884 if (error < 0) 1884 if (error < 0)
1885 goto bad_swap; 1885 goto bad_swap;
1886 p->bdev = bdev; 1886 p->bdev = bdev;
1887 p->flags |= SWP_BLKDEV;
1887 } else if (S_ISREG(inode->i_mode)) { 1888 } else if (S_ISREG(inode->i_mode)) {
1888 p->bdev = inode->i_sb->s_bdev; 1889 p->bdev = inode->i_sb->s_bdev;
1889 mutex_lock(&inode->i_mutex); 1890 mutex_lock(&inode->i_mutex);