X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=block%2Fioctl.c;fp=block%2Fioctl.c;h=e1109491c234c0ec50d15d220b81589d52cb10c6;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=9cfa2e1ecb24c2568e020222026271f68631deb7;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/block/ioctl.c b/block/ioctl.c index 9cfa2e1ec..e1109491c 100644 --- a/block/ioctl.c +++ b/block/ioctl.c @@ -5,7 +5,6 @@ #include #include #include -#include #include static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user *arg) @@ -43,9 +42,9 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user return -EINVAL; } /* partition number in use? */ - mutex_lock(&bdev->bd_mutex); + down(&bdev->bd_sem); if (disk->part[part - 1]) { - mutex_unlock(&bdev->bd_mutex); + up(&bdev->bd_sem); return -EBUSY; } /* overlap? */ @@ -56,13 +55,13 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user continue; if (!(start+length <= s->start_sect || start >= s->start_sect + s->nr_sects)) { - mutex_unlock(&bdev->bd_mutex); + up(&bdev->bd_sem); return -EBUSY; } } /* all seems OK */ add_partition(disk, part, start, length); - mutex_unlock(&bdev->bd_mutex); + up(&bdev->bd_sem); return 0; case BLKPG_DEL_PARTITION: if (!disk->part[part-1]) @@ -72,9 +71,9 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user bdevp = bdget_disk(disk, part); if (!bdevp) return -ENOMEM; - mutex_lock(&bdevp->bd_mutex); + down(&bdevp->bd_sem); if (bdevp->bd_openers) { - mutex_unlock(&bdevp->bd_mutex); + up(&bdevp->bd_sem); bdput(bdevp); return -EBUSY; } @@ -82,10 +81,10 @@ static int blkpg_ioctl(struct block_device *bdev, struct blkpg_ioctl_arg __user fsync_bdev(bdevp); invalidate_bdev(bdevp, 0); - mutex_lock(&bdev->bd_mutex); + down(&bdev->bd_sem); delete_partition(disk, part); - mutex_unlock(&bdev->bd_mutex); - mutex_unlock(&bdevp->bd_mutex); + up(&bdev->bd_sem); + up(&bdevp->bd_sem); bdput(bdevp); return 0; @@ -103,10 +102,10 @@ static int blkdev_reread_part(struct block_device *bdev) return -EINVAL; if (!capable(CAP_SYS_ADMIN)) return -EACCES; - if (!mutex_trylock(&bdev->bd_mutex)) + if (down_trylock(&bdev->bd_sem)) return -EBUSY; res = rescan_partitions(disk, bdev); - mutex_unlock(&bdev->bd_mutex); + up(&bdev->bd_sem); return res; } @@ -190,11 +189,6 @@ static int blkdev_locked_ioctl(struct file *file, struct block_device *bdev, return put_ulong(arg, bdev->bd_inode->i_size >> 9); case BLKGETSIZE64: return put_u64(arg, bdev->bd_inode->i_size); - case BLKTRACESTART: - case BLKTRACESTOP: - case BLKTRACESETUP: - case BLKTRACETEARDOWN: - return blk_trace_ioctl(bdev, cmd, (char __user *) arg); } return -ENOIOCTLCMD; }