]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - mm/swapfile.c
sd: implement sd_check_events()
[mv-sheeva.git] / mm / swapfile.c
index 67ddaaf98c744d9e7febe38b0cbdd9cabb55c5b1..b6adcfbf6f485e34b7fee53cfcb17679ef8be270 100644 (file)
@@ -1677,7 +1677,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
        if (S_ISBLK(inode->i_mode)) {
                struct block_device *bdev = I_BDEV(inode);
                set_blocksize(bdev, p->old_block_size);
-               bd_release(bdev);
+               blkdev_put(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL);
        } else {
                mutex_lock(&inode->i_mutex);
                inode->i_flags &= ~S_SWAPFILE;
@@ -1939,7 +1939,8 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
        error = -EINVAL;
        if (S_ISBLK(inode->i_mode)) {
                bdev = I_BDEV(inode);
-               error = bd_claim(bdev, sys_swapon);
+               error = blkdev_get(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL,
+                                  sys_swapon);
                if (error < 0) {
                        bdev = NULL;
                        error = -EINVAL;
@@ -2136,7 +2137,7 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags)
 bad_swap:
        if (bdev) {
                set_blocksize(bdev, p->old_block_size);
-               bd_release(bdev);
+               blkdev_put(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL);
        }
        destroy_swap_extents(p);
        swap_cgroup_swapoff(type);