You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev
* git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev: (66 commits) [PATCH] kill the rest of struct file propagation in block ioctls [PATCH] get rid of struct file use in blkdev_ioctl() BLKBSZSET [PATCH] get rid of blkdev_locked_ioctl() [PATCH] get rid of blkdev_driver_ioctl() [PATCH] sanitize blkdev_get() and friends [PATCH] remember mode of reiserfs journal [PATCH] propagate mode through swsusp_close() [PATCH] propagate mode through open_bdev_excl/close_bdev_excl [PATCH] pass fmode_t to blkdev_put() [PATCH] kill the unused bsize on the send side of /dev/loop [PATCH] trim file propagation in block/compat_ioctl.c [PATCH] end of methods switch: remove the old ones [PATCH] switch sr [PATCH] switch sd [PATCH] switch ide-scsi [PATCH] switch tape_block [PATCH] switch dcssblk [PATCH] switch dasd [PATCH] switch mtd_blkdevs [PATCH] switch mmc ...
This commit is contained in:
+9
-13
@@ -2089,17 +2089,15 @@ static ide_driver_t ide_cdrom_driver = {
|
||||
#endif
|
||||
};
|
||||
|
||||
static int idecd_open(struct inode *inode, struct file *file)
|
||||
static int idecd_open(struct block_device *bdev, fmode_t mode)
|
||||
{
|
||||
struct gendisk *disk = inode->i_bdev->bd_disk;
|
||||
struct cdrom_info *info;
|
||||
struct cdrom_info *info = ide_cd_get(bdev->bd_disk);
|
||||
int rc = -ENOMEM;
|
||||
|
||||
info = ide_cd_get(disk);
|
||||
if (!info)
|
||||
return -ENXIO;
|
||||
|
||||
rc = cdrom_open(&info->devinfo, inode, file);
|
||||
rc = cdrom_open(&info->devinfo, bdev, mode);
|
||||
|
||||
if (rc < 0)
|
||||
ide_cd_put(info);
|
||||
@@ -2107,12 +2105,11 @@ static int idecd_open(struct inode *inode, struct file *file)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int idecd_release(struct inode *inode, struct file *file)
|
||||
static int idecd_release(struct gendisk *disk, fmode_t mode)
|
||||
{
|
||||
struct gendisk *disk = inode->i_bdev->bd_disk;
|
||||
struct cdrom_info *info = ide_drv_g(disk, cdrom_info);
|
||||
|
||||
cdrom_release(&info->devinfo, file);
|
||||
cdrom_release(&info->devinfo, mode);
|
||||
|
||||
ide_cd_put(info);
|
||||
|
||||
@@ -2158,10 +2155,9 @@ static int idecd_get_spindown(struct cdrom_device_info *cdi, unsigned long arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int idecd_ioctl(struct inode *inode, struct file *file,
|
||||
static int idecd_ioctl(struct block_device *bdev, fmode_t mode,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct block_device *bdev = inode->i_bdev;
|
||||
struct cdrom_info *info = ide_drv_g(bdev->bd_disk, cdrom_info);
|
||||
int err;
|
||||
|
||||
@@ -2174,9 +2170,9 @@ static int idecd_ioctl(struct inode *inode, struct file *file,
|
||||
break;
|
||||
}
|
||||
|
||||
err = generic_ide_ioctl(info->drive, file, bdev, cmd, arg);
|
||||
err = generic_ide_ioctl(info->drive, bdev, cmd, arg);
|
||||
if (err == -EINVAL)
|
||||
err = cdrom_ioctl(file, &info->devinfo, inode, cmd, arg);
|
||||
err = cdrom_ioctl(&info->devinfo, bdev, mode, cmd, arg);
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -2201,7 +2197,7 @@ static struct block_device_operations idecd_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idecd_open,
|
||||
.release = idecd_release,
|
||||
.ioctl = idecd_ioctl,
|
||||
.locked_ioctl = idecd_ioctl,
|
||||
.media_changed = idecd_media_changed,
|
||||
.revalidate_disk = idecd_revalidate_disk
|
||||
};
|
||||
|
||||
@@ -13,7 +13,7 @@ ide_decl_devset(wcache);
|
||||
ide_decl_devset(acoustic);
|
||||
|
||||
/* ide-disk_ioctl.c */
|
||||
int ide_disk_ioctl(ide_drive_t *, struct inode *, struct file *, unsigned int,
|
||||
int ide_disk_ioctl(ide_drive_t *, struct block_device *, fmode_t, unsigned int,
|
||||
unsigned long);
|
||||
|
||||
#ifdef CONFIG_IDE_PROC_FS
|
||||
|
||||
@@ -13,15 +13,14 @@ static const struct ide_ioctl_devset ide_disk_ioctl_settings[] = {
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
int ide_disk_ioctl(ide_drive_t *drive, struct inode *inode, struct file *file,
|
||||
int ide_disk_ioctl(ide_drive_t *drive, struct block_device *bdev, fmode_t mode,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct block_device *bdev = inode->i_bdev;
|
||||
int err;
|
||||
|
||||
err = ide_setting_ioctl(drive, bdev, cmd, arg, ide_disk_ioctl_settings);
|
||||
if (err != -EOPNOTSUPP)
|
||||
return err;
|
||||
|
||||
return generic_ide_ioctl(drive, file, bdev, cmd, arg);
|
||||
return generic_ide_ioctl(drive, bdev, cmd, arg);
|
||||
}
|
||||
|
||||
@@ -23,8 +23,8 @@ void ide_floppy_create_mode_sense_cmd(struct ide_atapi_pc *, u8);
|
||||
void ide_floppy_create_read_capacity_cmd(struct ide_atapi_pc *);
|
||||
|
||||
/* ide-floppy_ioctl.c */
|
||||
int ide_floppy_ioctl(ide_drive_t *, struct inode *, struct file *, unsigned int,
|
||||
unsigned long);
|
||||
int ide_floppy_ioctl(ide_drive_t *, struct block_device *, fmode_t,
|
||||
unsigned int, unsigned long);
|
||||
|
||||
#ifdef CONFIG_IDE_PROC_FS
|
||||
/* ide-floppy_proc.c */
|
||||
|
||||
@@ -241,7 +241,7 @@ static int ide_floppy_lockdoor(ide_drive_t *drive, struct ide_atapi_pc *pc,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ide_floppy_format_ioctl(ide_drive_t *drive, struct file *file,
|
||||
static int ide_floppy_format_ioctl(ide_drive_t *drive, fmode_t mode,
|
||||
unsigned int cmd, void __user *argp)
|
||||
{
|
||||
switch (cmd) {
|
||||
@@ -250,7 +250,7 @@ static int ide_floppy_format_ioctl(ide_drive_t *drive, struct file *file,
|
||||
case IDEFLOPPY_IOCTL_FORMAT_GET_CAPACITY:
|
||||
return ide_floppy_get_format_capacities(drive, argp);
|
||||
case IDEFLOPPY_IOCTL_FORMAT_START:
|
||||
if (!(file->f_mode & 2))
|
||||
if (!(mode & FMODE_WRITE))
|
||||
return -EPERM;
|
||||
return ide_floppy_format_unit(drive, (int __user *)argp);
|
||||
case IDEFLOPPY_IOCTL_FORMAT_GET_PROGRESS:
|
||||
@@ -260,10 +260,9 @@ static int ide_floppy_format_ioctl(ide_drive_t *drive, struct file *file,
|
||||
}
|
||||
}
|
||||
|
||||
int ide_floppy_ioctl(ide_drive_t *drive, struct inode *inode,
|
||||
struct file *file, unsigned int cmd, unsigned long arg)
|
||||
int ide_floppy_ioctl(ide_drive_t *drive, struct block_device *bdev,
|
||||
fmode_t mode, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct block_device *bdev = inode->i_bdev;
|
||||
struct ide_atapi_pc pc;
|
||||
void __user *argp = (void __user *)arg;
|
||||
int err;
|
||||
@@ -271,7 +270,7 @@ int ide_floppy_ioctl(ide_drive_t *drive, struct inode *inode,
|
||||
if (cmd == CDROMEJECT || cmd == CDROM_LOCKDOOR)
|
||||
return ide_floppy_lockdoor(drive, &pc, arg, cmd);
|
||||
|
||||
err = ide_floppy_format_ioctl(drive, file, cmd, argp);
|
||||
err = ide_floppy_format_ioctl(drive, mode, cmd, argp);
|
||||
if (err != -ENOTTY)
|
||||
return err;
|
||||
|
||||
@@ -280,11 +279,11 @@ int ide_floppy_ioctl(ide_drive_t *drive, struct inode *inode,
|
||||
* and CDROM_SEND_PACKET (legacy) ioctls
|
||||
*/
|
||||
if (cmd != CDROM_SEND_PACKET && cmd != SCSI_IOCTL_SEND_COMMAND)
|
||||
err = scsi_cmd_ioctl(file, bdev->bd_disk->queue,
|
||||
bdev->bd_disk, cmd, argp);
|
||||
err = scsi_cmd_ioctl(bdev->bd_disk->queue, bdev->bd_disk,
|
||||
mode, cmd, argp);
|
||||
|
||||
if (err == -ENOTTY)
|
||||
err = generic_ide_ioctl(drive, file, bdev, cmd, arg);
|
||||
err = generic_ide_ioctl(drive, bdev, cmd, arg);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
+9
-11
@@ -169,9 +169,9 @@ static ide_driver_t ide_gd_driver = {
|
||||
#endif
|
||||
};
|
||||
|
||||
static int ide_gd_open(struct inode *inode, struct file *filp)
|
||||
static int ide_gd_open(struct block_device *bdev, fmode_t mode)
|
||||
{
|
||||
struct gendisk *disk = inode->i_bdev->bd_disk;
|
||||
struct gendisk *disk = bdev->bd_disk;
|
||||
struct ide_disk_obj *idkp;
|
||||
ide_drive_t *drive;
|
||||
int ret = 0;
|
||||
@@ -197,12 +197,12 @@ static int ide_gd_open(struct inode *inode, struct file *filp)
|
||||
* unreadable disk, so that we can get the format capacity
|
||||
* of the drive or begin the format - Sam
|
||||
*/
|
||||
if (ret && (filp->f_flags & O_NDELAY) == 0) {
|
||||
if (ret && (mode & FMODE_NDELAY) == 0) {
|
||||
ret = -EIO;
|
||||
goto out_put_idkp;
|
||||
}
|
||||
|
||||
if ((drive->dev_flags & IDE_DFLAG_WP) && (filp->f_mode & 2)) {
|
||||
if ((drive->dev_flags & IDE_DFLAG_WP) && (mode & FMODE_WRITE)) {
|
||||
ret = -EROFS;
|
||||
goto out_put_idkp;
|
||||
}
|
||||
@@ -214,7 +214,7 @@ static int ide_gd_open(struct inode *inode, struct file *filp)
|
||||
*/
|
||||
drive->disk_ops->set_doorlock(drive, disk, 1);
|
||||
drive->dev_flags |= IDE_DFLAG_MEDIA_CHANGED;
|
||||
check_disk_change(inode->i_bdev);
|
||||
check_disk_change(bdev);
|
||||
} else if (drive->dev_flags & IDE_DFLAG_FORMAT_IN_PROGRESS) {
|
||||
ret = -EBUSY;
|
||||
goto out_put_idkp;
|
||||
@@ -227,9 +227,8 @@ out_put_idkp:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ide_gd_release(struct inode *inode, struct file *filp)
|
||||
static int ide_gd_release(struct gendisk *disk, fmode_t mode)
|
||||
{
|
||||
struct gendisk *disk = inode->i_bdev->bd_disk;
|
||||
struct ide_disk_obj *idkp = ide_drv_g(disk, ide_disk_obj);
|
||||
ide_drive_t *drive = idkp->drive;
|
||||
|
||||
@@ -286,21 +285,20 @@ static int ide_gd_revalidate_disk(struct gendisk *disk)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ide_gd_ioctl(struct inode *inode, struct file *file,
|
||||
static int ide_gd_ioctl(struct block_device *bdev, fmode_t mode,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct block_device *bdev = inode->i_bdev;
|
||||
struct ide_disk_obj *idkp = ide_drv_g(bdev->bd_disk, ide_disk_obj);
|
||||
ide_drive_t *drive = idkp->drive;
|
||||
|
||||
return drive->disk_ops->ioctl(drive, inode, file, cmd, arg);
|
||||
return drive->disk_ops->ioctl(drive, bdev, mode, cmd, arg);
|
||||
}
|
||||
|
||||
static struct block_device_operations ide_gd_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = ide_gd_open,
|
||||
.release = ide_gd_release,
|
||||
.ioctl = ide_gd_ioctl,
|
||||
.locked_ioctl = ide_gd_ioctl,
|
||||
.getgeo = ide_gd_getgeo,
|
||||
.media_changed = ide_gd_media_changed,
|
||||
.revalidate_disk = ide_gd_revalidate_disk
|
||||
|
||||
@@ -240,8 +240,7 @@ static int generic_drive_reset(ide_drive_t *drive)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int generic_ide_ioctl(ide_drive_t *drive, struct file *file,
|
||||
struct block_device *bdev,
|
||||
int generic_ide_ioctl(ide_drive_t *drive, struct block_device *bdev,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
int err;
|
||||
|
||||
+6
-11
@@ -2340,35 +2340,30 @@ static const struct file_operations idetape_fops = {
|
||||
.release = idetape_chrdev_release,
|
||||
};
|
||||
|
||||
static int idetape_open(struct inode *inode, struct file *filp)
|
||||
static int idetape_open(struct block_device *bdev, fmode_t mode)
|
||||
{
|
||||
struct gendisk *disk = inode->i_bdev->bd_disk;
|
||||
struct ide_tape_obj *tape;
|
||||
struct ide_tape_obj *tape = ide_tape_get(bdev->bd_disk);
|
||||
|
||||
tape = ide_tape_get(disk);
|
||||
if (!tape)
|
||||
return -ENXIO;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int idetape_release(struct inode *inode, struct file *filp)
|
||||
static int idetape_release(struct gendisk *disk, fmode_t mode)
|
||||
{
|
||||
struct gendisk *disk = inode->i_bdev->bd_disk;
|
||||
struct ide_tape_obj *tape = ide_drv_g(disk, ide_tape_obj);
|
||||
|
||||
ide_tape_put(tape);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int idetape_ioctl(struct inode *inode, struct file *file,
|
||||
static int idetape_ioctl(struct block_device *bdev, fmode_t mode,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct block_device *bdev = inode->i_bdev;
|
||||
struct ide_tape_obj *tape = ide_drv_g(bdev->bd_disk, ide_tape_obj);
|
||||
ide_drive_t *drive = tape->drive;
|
||||
int err = generic_ide_ioctl(drive, file, bdev, cmd, arg);
|
||||
int err = generic_ide_ioctl(drive, bdev, cmd, arg);
|
||||
if (err == -EINVAL)
|
||||
err = idetape_blkdev_ioctl(drive, cmd, arg);
|
||||
return err;
|
||||
@@ -2378,7 +2373,7 @@ static struct block_device_operations idetape_block_ops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = idetape_open,
|
||||
.release = idetape_release,
|
||||
.ioctl = idetape_ioctl,
|
||||
.locked_ioctl = idetape_ioctl,
|
||||
};
|
||||
|
||||
static int ide_tape_probe(ide_drive_t *drive)
|
||||
|
||||
Reference in New Issue
Block a user