aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-floppy.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide/ide-floppy.c')
-rw-r--r--drivers/ide/ide-floppy.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
index 07fa37d84df2..61969415c57b 100644
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -279,6 +279,7 @@ typedef struct ide_floppy_obj {
279 ide_driver_t *driver; 279 ide_driver_t *driver;
280 struct gendisk *disk; 280 struct gendisk *disk;
281 struct kref kref; 281 struct kref kref;
282 unsigned int openers; /* protected by BKL for now */
282 283
283 /* Current packet command */ 284 /* Current packet command */
284 idefloppy_pc_t *pc; 285 idefloppy_pc_t *pc;
@@ -1950,9 +1951,9 @@ static int idefloppy_open(struct inode *inode, struct file *filp)
1950 1951
1951 drive = floppy->drive; 1952 drive = floppy->drive;
1952 1953
1953 drive->usage++; 1954 floppy->openers++;
1954 1955
1955 if (drive->usage == 1) { 1956 if (floppy->openers == 1) {
1956 clear_bit(IDEFLOPPY_FORMAT_IN_PROGRESS, &floppy->flags); 1957 clear_bit(IDEFLOPPY_FORMAT_IN_PROGRESS, &floppy->flags);
1957 /* Just in case */ 1958 /* Just in case */
1958 1959
@@ -1970,13 +1971,11 @@ static int idefloppy_open(struct inode *inode, struct file *filp)
1970 ** capacity of the drive or begin the format - Sam 1971 ** capacity of the drive or begin the format - Sam
1971 */ 1972 */
1972 ) { 1973 ) {
1973 drive->usage--;
1974 ret = -EIO; 1974 ret = -EIO;
1975 goto out_put_floppy; 1975 goto out_put_floppy;
1976 } 1976 }
1977 1977
1978 if (floppy->wp && (filp->f_mode & 2)) { 1978 if (floppy->wp && (filp->f_mode & 2)) {
1979 drive->usage--;
1980 ret = -EROFS; 1979 ret = -EROFS;
1981 goto out_put_floppy; 1980 goto out_put_floppy;
1982 } 1981 }
@@ -1988,13 +1987,13 @@ static int idefloppy_open(struct inode *inode, struct file *filp)
1988 } 1987 }
1989 check_disk_change(inode->i_bdev); 1988 check_disk_change(inode->i_bdev);
1990 } else if (test_bit(IDEFLOPPY_FORMAT_IN_PROGRESS, &floppy->flags)) { 1989 } else if (test_bit(IDEFLOPPY_FORMAT_IN_PROGRESS, &floppy->flags)) {
1991 drive->usage--;
1992 ret = -EBUSY; 1990 ret = -EBUSY;
1993 goto out_put_floppy; 1991 goto out_put_floppy;
1994 } 1992 }
1995 return 0; 1993 return 0;
1996 1994
1997out_put_floppy: 1995out_put_floppy:
1996 floppy->openers--;
1998 ide_floppy_put(floppy); 1997 ide_floppy_put(floppy);
1999 return ret; 1998 return ret;
2000} 1999}
@@ -2008,7 +2007,7 @@ static int idefloppy_release(struct inode *inode, struct file *filp)
2008 2007
2009 debug_log(KERN_INFO "Reached idefloppy_release\n"); 2008 debug_log(KERN_INFO "Reached idefloppy_release\n");
2010 2009
2011 if (drive->usage == 1) { 2010 if (floppy->openers == 1) {
2012 /* IOMEGA Clik! drives do not support lock/unlock commands */ 2011 /* IOMEGA Clik! drives do not support lock/unlock commands */
2013 if (!test_bit(IDEFLOPPY_CLIK_DRIVE, &floppy->flags)) { 2012 if (!test_bit(IDEFLOPPY_CLIK_DRIVE, &floppy->flags)) {
2014 idefloppy_create_prevent_cmd(&pc, 0); 2013 idefloppy_create_prevent_cmd(&pc, 0);
@@ -2017,7 +2016,8 @@ static int idefloppy_release(struct inode *inode, struct file *filp)
2017 2016
2018 clear_bit(IDEFLOPPY_FORMAT_IN_PROGRESS, &floppy->flags); 2017 clear_bit(IDEFLOPPY_FORMAT_IN_PROGRESS, &floppy->flags);
2019 } 2018 }
2020 drive->usage--; 2019
2020 floppy->openers--;
2021 2021
2022 ide_floppy_put(floppy); 2022 ide_floppy_put(floppy);
2023 2023
@@ -2051,7 +2051,7 @@ static int idefloppy_ioctl(struct inode *inode, struct file *file,
2051 prevent = 0; 2051 prevent = 0;
2052 /* fall through */ 2052 /* fall through */
2053 case CDROM_LOCKDOOR: 2053 case CDROM_LOCKDOOR:
2054 if (drive->usage > 1) 2054 if (floppy->openers > 1)
2055 return -EBUSY; 2055 return -EBUSY;
2056 2056
2057 /* The IOMEGA Clik! Drive doesn't support this command - no room for an eject mechanism */ 2057 /* The IOMEGA Clik! Drive doesn't support this command - no room for an eject mechanism */
@@ -2073,7 +2073,7 @@ static int idefloppy_ioctl(struct inode *inode, struct file *file,
2073 if (!(file->f_mode & 2)) 2073 if (!(file->f_mode & 2))
2074 return -EPERM; 2074 return -EPERM;
2075 2075
2076 if (drive->usage > 1) { 2076 if (floppy->openers > 1) {
2077 /* Don't format if someone is using the disk */ 2077 /* Don't format if someone is using the disk */
2078 2078
2079 clear_bit(IDEFLOPPY_FORMAT_IN_PROGRESS, 2079 clear_bit(IDEFLOPPY_FORMAT_IN_PROGRESS,