swapfile.c (83ef99befc324803a54cf2a5fab5a322df3a99d6) swapfile.c (7de7fb6b3422e6d1dac00666a992834085e745dc)
1/*
2 * linux/mm/swapfile.c
3 *
4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds
5 * Swap reorganised 29.12.95, Stephen Tweedie
6 */
7
8#include <linux/mm.h>

--- 1902 unchanged lines hidden (view full) ---

1911 if (!capable(CAP_SYS_ADMIN))
1912 return -EPERM;
1913
1914 p = alloc_swap_info();
1915 if (IS_ERR(p))
1916 return PTR_ERR(p);
1917
1918 name = getname(specialfile);
1/*
2 * linux/mm/swapfile.c
3 *
4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds
5 * Swap reorganised 29.12.95, Stephen Tweedie
6 */
7
8#include <linux/mm.h>

--- 1902 unchanged lines hidden (view full) ---

1911 if (!capable(CAP_SYS_ADMIN))
1912 return -EPERM;
1913
1914 p = alloc_swap_info();
1915 if (IS_ERR(p))
1916 return PTR_ERR(p);
1917
1918 name = getname(specialfile);
1919 error = PTR_ERR(name);
1920 if (IS_ERR(name)) {
1919 if (IS_ERR(name)) {
1920 error = PTR_ERR(name);
1921 name = NULL;
1922 goto bad_swap_2;
1923 }
1924 swap_file = filp_open(name, O_RDWR|O_LARGEFILE, 0);
1921 name = NULL;
1922 goto bad_swap_2;
1923 }
1924 swap_file = filp_open(name, O_RDWR|O_LARGEFILE, 0);
1925 error = PTR_ERR(swap_file);
1926 if (IS_ERR(swap_file)) {
1925 if (IS_ERR(swap_file)) {
1926 error = PTR_ERR(swap_file);
1927 swap_file = NULL;
1928 goto bad_swap_2;
1929 }
1930
1931 p->swap_file = swap_file;
1932 mapping = swap_file->f_mapping;
1933 inode = mapping->host;
1934
1927 swap_file = NULL;
1928 goto bad_swap_2;
1929 }
1930
1931 p->swap_file = swap_file;
1932 mapping = swap_file->f_mapping;
1933 inode = mapping->host;
1934
1935 error = -EBUSY;
1936 for (i = 0; i < nr_swapfiles; i++) {
1937 struct swap_info_struct *q = swap_info[i];
1938
1939 if (q == p || !q->swap_file)
1940 continue;
1935 for (i = 0; i < nr_swapfiles; i++) {
1936 struct swap_info_struct *q = swap_info[i];
1937
1938 if (q == p || !q->swap_file)
1939 continue;
1941 if (mapping == q->swap_file->f_mapping)
1940 if (mapping == q->swap_file->f_mapping) {
1941 error = -EBUSY;
1942 goto bad_swap;
1942 goto bad_swap;
1943 }
1943 }
1944
1944 }
1945
1945 error = -EINVAL;
1946 if (S_ISBLK(inode->i_mode)) {
1947 bdev = bdgrab(I_BDEV(inode));
1948 error = blkdev_get(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL,
1949 sys_swapon);
1950 if (error < 0) {
1951 bdev = NULL;
1952 error = -EINVAL;
1953 goto bad_swap;

--- 7 unchanged lines hidden (view full) ---

1961 } else if (S_ISREG(inode->i_mode)) {
1962 p->bdev = inode->i_sb->s_bdev;
1963 mutex_lock(&inode->i_mutex);
1964 if (IS_SWAPFILE(inode)) {
1965 error = -EBUSY;
1966 goto bad_swap;
1967 }
1968 } else {
1946 if (S_ISBLK(inode->i_mode)) {
1947 bdev = bdgrab(I_BDEV(inode));
1948 error = blkdev_get(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL,
1949 sys_swapon);
1950 if (error < 0) {
1951 bdev = NULL;
1952 error = -EINVAL;
1953 goto bad_swap;

--- 7 unchanged lines hidden (view full) ---

1961 } else if (S_ISREG(inode->i_mode)) {
1962 p->bdev = inode->i_sb->s_bdev;
1963 mutex_lock(&inode->i_mutex);
1964 if (IS_SWAPFILE(inode)) {
1965 error = -EBUSY;
1966 goto bad_swap;
1967 }
1968 } else {
1969 error = -EINVAL;
1969 goto bad_swap;
1970 }
1971
1972 swapfilepages = i_size_read(inode) >> PAGE_SHIFT;
1973
1974 /*
1975 * Read the swap header.
1976 */

--- 591 unchanged lines hidden ---
1970 goto bad_swap;
1971 }
1972
1973 swapfilepages = i_size_read(inode) >> PAGE_SHIFT;
1974
1975 /*
1976 * Read the swap header.
1977 */

--- 591 unchanged lines hidden ---