login
Login
/
Register
Search
Search this site:
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2008
»
August
»
11
Re: [PATCH 11/22] ide: add ide_set_media_lock() helper
view
thread
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From: Borislav Petkov
Subject:
Re: [PATCH 11/22] ide: add ide_set_media_lock() helper
Date: Sunday, August 10, 2008 - 11:02 pm
Hi, On Sun, Aug 10, 2008 at 05:36:45PM +0200, Bartlomiej Zolnierkiewicz wrote:
quoted text
> * Set IDE_AFLAG_NO_DOORLOCK in idetape_get_mode_sense_result(), check it > in ide_tape_set_media_lock() and cleanup idetape_create_prevent_cmd(). > > * Set IDE_AFLAG_NO_DOORLOCK in ide_floppy_create_read_capacity_cmd() and > check it instead of IDE_AFLAG_CLIK_DRIVE in ide_floppy_set_media_lock(). > > * Add ide_set_media_lock() helper and convert ide-{floppy,tape}.c to use it. > > * Remove no longer used ide*_create_prevent_cmd()/ide*_set_media_lock(). > > * Update comment in <linux/ide.h> accordingly. > > Cc: Borislav Petkov <petkovbb@gmail.com> > Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> > --- > drivers/ide/ide-atapi.c | 15 +++++++++++++++ > drivers/ide/ide-floppy.c | 32 +++++++------------------------- > drivers/ide/ide-tape.c | 41 ++++++++++------------------------------- > include/linux/ide.h | 6 ++++-- > 4 files changed, 36 insertions(+), 58 deletions(-) > > Index: b/drivers/ide/ide-atapi.c > =================================================================== > --- a/drivers/ide/ide-atapi.c > +++ b/drivers/ide/ide-atapi.c > @@ -162,6 +162,21 @@ int ide_queue_pc_tail(ide_drive_t *drive > } > EXPORT_SYMBOL_GPL(ide_queue_pc_tail); > > +int ide_set_media_lock(ide_drive_t *drive, struct gendisk *disk, int on) > +{ > + struct ide_atapi_pc pc; > + > + if (drive->atapi_flags & IDE_AFLAG_NO_DOORLOCK) > + return 0; > + > + ide_init_pc(&pc); > + pc.c[0] = ALLOW_MEDIUM_REMOVAL;
Are we switching to SCSI opcodes? What about the generic packet commands in <include/linux/cdrom.h>?
quoted text
> + pc.c[4] = on; > + > + return ide_queue_pc_tail(drive, disk, &pc); > +} > +EXPORT_SYMBOL_GPL(ide_set_media_lock); > + > /* TODO: unify the code thus making some arguments go away */ > ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc, > ide_handler_t *handler, unsigned int timeout, ide_expiry_t *expiry, > Index: b/drivers/ide/ide-floppy.c > =================================================================== > --- a/drivers/ide/ide-floppy.c > +++ b/drivers/ide/ide-floppy.c > @@ -324,15 +324,6 @@ static ide_startstop_t idefloppy_issue_p > IDEFLOPPY_WAIT_CMD, NULL); > } > > -static void idefloppy_create_prevent_cmd(struct ide_atapi_pc *pc, int prevent) > -{ > - debug_log("creating prevent removal command, prevent = %d\n", prevent); > - > - ide_init_pc(pc); > - pc->c[0] = GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL; > - pc->c[4] = prevent; > -} > - > void ide_floppy_create_read_capacity_cmd(struct ide_atapi_pc *pc) > { > ide_init_pc(pc); > @@ -711,6 +702,8 @@ static void idefloppy_setup(ide_drive_t > if (strncmp((char *)&id[ATA_ID_PROD], "IOMEGA Clik!", 11) == 0) { > blk_queue_max_sectors(drive->queue, 64); > drive->atapi_flags |= IDE_AFLAG_CLIK_DRIVE; > + /* IOMEGA Clik! drives do not support lock/unlock commands */ > + drive->atapi_flags |= IDE_AFLAG_NO_DOORLOCK; > } > > (void) ide_floppy_get_capacity(drive); > @@ -781,18 +774,6 @@ static ide_driver_t idefloppy_driver = { > #endif > }; > > -static void ide_floppy_set_media_lock(ide_drive_t *drive, int on) > -{ > - struct ide_floppy_obj *floppy = drive->driver_data; > - struct ide_atapi_pc pc; > - > - /* IOMEGA Clik! drives do not support lock/unlock commands */ > - if ((drive->atapi_flags & IDE_AFLAG_CLIK_DRIVE) == 0) { > - idefloppy_create_prevent_cmd(&pc, on); > - (void)ide_queue_pc_tail(drive, floppy->disk, &pc); > - } > -} > - > static int idefloppy_open(struct inode *inode, struct file *filp) > { > struct gendisk *disk = inode->i_bdev->bd_disk; > @@ -841,7 +822,7 @@ static int idefloppy_open(struct inode * > } > > drive->atapi_flags |= IDE_AFLAG_MEDIA_CHANGED; > - ide_floppy_set_media_lock(drive, 1); > + ide_set_media_lock(drive, disk, 1); > check_disk_change(inode->i_bdev); > } else if (drive->atapi_flags & IDE_AFLAG_FORMAT_IN_PROGRESS) { > ret = -EBUSY; > @@ -864,7 +845,7 @@ static int idefloppy_release(struct inod > debug_log("Reached %s\n", __func__); > > if (floppy->openers == 1) { > - ide_floppy_set_media_lock(drive, 0); > + ide_set_media_lock(drive, disk, 0); > drive->atapi_flags &= ~IDE_AFLAG_FORMAT_IN_PROGRESS; > } > > @@ -890,16 +871,17 @@ static int ide_floppy_lockdoor(ide_drive > unsigned long arg, unsigned int cmd) > { > idefloppy_floppy_t *floppy = drive->driver_data; > + struct gendisk *disk = floppy->disk; > int prevent = (arg && cmd != CDROMEJECT) ? 1 : 0; > > if (floppy->openers > 1) > return -EBUSY; > > - ide_floppy_set_media_lock(drive, prevent); > + ide_set_media_lock(drive, disk, prevent); > > if (cmd == CDROMEJECT) { > idefloppy_create_start_stop_cmd(pc, 2); > - (void)ide_queue_pc_tail(drive, floppy->disk, pc); > + (void)ide_queue_pc_tail(drive, disk, pc); > } > > return 0; > Index: b/drivers/ide/ide-tape.c > =================================================================== > --- a/drivers/ide/ide-tape.c > +++ b/drivers/ide/ide-tape.c > @@ -1213,32 +1213,6 @@ static void idetape_create_locate_cmd(id > pc->flags |= PC_FLAG_WAIT_FOR_DSC; > } > > -static int idetape_create_prevent_cmd(ide_drive_t *drive, > - struct ide_atapi_pc *pc, int prevent) > -{ > - idetape_tape_t *tape = drive->driver_data; > - > - /* device supports locking according to capabilities page */ > - if (!(tape->caps[6] & 0x01)) > - return 0; > - > - ide_init_pc(pc); > - pc->c[0] = ALLOW_MEDIUM_REMOVAL; > - pc->c[4] = prevent; > - return 1; > -} > - > -static int ide_tape_set_media_lock(ide_drive_t *drive, int on) > -{ > - struct ide_tape_obj *tape = drive->driver_data; > - struct ide_atapi_pc pc; > - > - if (!idetape_create_prevent_cmd(drive, &pc, on)) > - return 0; > - > - return ide_queue_pc_tail(drive, tape->disk, &pc); > -} > - > static void __ide_tape_discard_merge_buffer(ide_drive_t *drive) > { > idetape_tape_t *tape = drive->driver_data; > @@ -1871,7 +1845,7 @@ static int idetape_mtioctop(ide_drive_t > * attempting to eject. > */ > if (tape->door_locked) { > - if (!ide_tape_set_media_lock(drive, 0)) > + if (!ide_set_media_lock(drive, disk, 0)) > tape->door_locked = DOOR_UNLOCKED; > } > ide_tape_discard_merge_buffer(drive, 0); > @@ -1916,13 +1890,13 @@ static int idetape_mtioctop(ide_drive_t > case MTFSR: > case MTBSR: > case MTLOCK: > - retval = ide_tape_set_media_lock(drive, 1); > + retval = ide_set_media_lock(drive, disk, 1); > if (retval) > return retval; > tape->door_locked = DOOR_EXPLICITLY_LOCKED; > return 0; > case MTUNLOCK: > - retval = ide_tape_set_media_lock(drive, 0); > + retval = ide_set_media_lock(drive, disk, 0); > if (retval) > return retval; > tape->door_locked = DOOR_UNLOCKED; > @@ -2086,7 +2060,7 @@ static int idetape_chrdev_open(struct in > > /* Lock the tape drive door so user can't eject. */ > if (tape->chrdev_dir == IDETAPE_DIR_NONE) { > - if (!ide_tape_set_media_lock(drive, 1)) { > + if (!ide_set_media_lock(drive, tape->disk, 1)) { > if (tape->door_locked != DOOR_EXPLICITLY_LOCKED) > tape->door_locked = DOOR_LOCKED; > } > @@ -2139,7 +2113,7 @@ static int idetape_chrdev_release(struct > (void) idetape_rewind_tape(drive); > if (tape->chrdev_dir == IDETAPE_DIR_NONE) { > if (tape->door_locked == DOOR_LOCKED) { > - if (!ide_tape_set_media_lock(drive, 0)) > + if (!ide_set_media_lock(drive, tape->disk, 0)) > tape->door_locked = DOOR_UNLOCKED; > } > } > @@ -2217,6 +2191,11 @@ static void idetape_get_mode_sense_resul > } > > memcpy(&tape->caps, caps, 20); > + > + /* device lacks locking support according to capabilities page */ > + if ((caps[6] & 1) == 0) > + drive->atapi_flags |= IDE_AFLAG_NO_DOORLOCK; > + > if (caps[7] & 0x02) > tape->blk_size = 512; > else if (caps[7] & 0x04) > Index: b/include/linux/ide.h > =================================================================== > --- a/include/linux/ide.h > +++ b/include/linux/ide.h > @@ -317,10 +317,10 @@ struct ide_acpi_hwif_link; > enum { > IDE_AFLAG_DRQ_INTERRUPT = (1 << 0), > IDE_AFLAG_MEDIA_CHANGED = (1 << 1), > - > - /* ide-cd */ > /* Drive cannot lock the door. */ > IDE_AFLAG_NO_DOORLOCK = (1 << 2), > + > + /* ide-cd */ > /* Drive cannot eject the disc. */ > IDE_AFLAG_NO_EJECT = (1 << 3), > /* Drive is a pre ATAPI 1.2 drive. */ > @@ -1140,6 +1140,8 @@ void ide_queue_pc_head(ide_drive_t *, st > struct request *); > int ide_queue_pc_tail(ide_drive_t *, struct gendisk *, struct ide_atapi_pc *); > > +int ide_set_media_lock(ide_drive_t *, struct gendisk *, int); > + > ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc, > ide_handler_t *handler, unsigned int timeout, ide_expiry_t *expiry, > void (*update_buffers)(ide_drive_t *, struct ide_atapi_pc *),
-- Regards/Gruss, Boris. --
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[PATCH 00/22] ide: more work on generic ATAPI support
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:35 am)
[PATCH 01/22] ide-floppy: fixup ide_floppy_io_buffers()
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:35 am)
[PATCH 02/22] ide-scsi: cleanup ide_scsi_io_buffers()
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:35 am)
[PATCH 03/22] ide: add ide_io_buffers() helper
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:35 am)
[PATCH 04/22] ide-floppy: add ide_floppy_set_media_lock() ...
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:35 am)
[PATCH 05/22] ide-tape: add ide_tape_set_media_lock() helper
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:36 am)
[PATCH 06/22] ide: add ide_init_pc() helper
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:36 am)
[PATCH 07/22] ide: add ide_queue_pc_head() helper
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:36 am)
[PATCH 08/22] ide: add ide_queue_pc_tail() helper
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:36 am)
[PATCH 09/22] ide-floppy: ->{srfp,wp} -> IDE_AFLAG_{SRFP,WP}
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:36 am)
[PATCH 10/22] ide-floppy: move floppy ioctls handling to i ...
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:36 am)
[PATCH 11/22] ide: add ide_set_media_lock() helper
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:36 am)
[PATCH 12/22] ide: add ide_do_start_stop() helper
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:36 am)
[PATCH 13/22] ide: add ide_do_test_unit_ready() helper
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:37 am)
[PATCH 14/22] ide: move IDE{FLOPPY,TAPE}_WAIT_CMD defines ...
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:37 am)
[PATCH 15/22] ide: drop dsc_handle argument from ide_pc_intr()
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:37 am)
[PATCH 16/22] ide: add pointer to the current packet comma ...
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:37 am)
[PATCH 17/22] ide: drop 'timeout' and 'expiry' arguments f ...
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:37 am)
[PATCH 18/22] ide: add request_sense_{pc,rq} to ide_drive_t
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:37 am)
[PATCH 19/22] ide: add ide_retry_pc() helper
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:37 am)
[PATCH 20/22] ide: add ->pc_{update,io}_buffers methods
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:37 am)
[PATCH 21/22] ide: make ide_pc_intr() static
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:37 am)
[PATCH 22/22] ide: make ide_transfer_pc() static
, Bartlomiej Zolnierki ...
, (Sun Aug 10, 8:38 am)
Re: [PATCH 11/22] ide: add ide_set_media_lock() helper
, Borislav Petkov
, (Sun Aug 10, 11:02 pm)
Re: [PATCH 00/22] ide: more work on generic ATAPI support
, Borislav Petkov
, (Sun Aug 10, 11:36 pm)
Re: [PATCH 11/22] ide: add ide_set_media_lock() helper
, Bartlomiej Zolnierki ...
, (Tue Aug 12, 2:05 am)
Re: [PATCH 11/22] ide: add ide_set_media_lock() helper
, Boris Petkov
, (Tue Aug 12, 6:37 am)
Re: [PATCH 11/22] ide: add ide_set_media_lock() helper
, Bartlomiej Zolnierki ...
, (Tue Aug 12, 10:48 am)
Re: [PATCH 04/22] ide-floppy: add ide_floppy_set_media_loc ...
, Sergei Shtylyov
, (Sat Aug 23, 4:49 am)
Re: [PATCH 13/22] ide: add ide_do_test_unit_ready() helper
, Sergei Shtylyov
, (Sat Aug 23, 2:31 pm)
Re: [PATCH 07/22] ide: add ide_queue_pc_head() helper
, Sergei Shtylyov
, (Sat Aug 23, 2:57 pm)
Re: [PATCH 08/22] ide: add ide_queue_pc_tail() helper
, Sergei Shtylyov
, (Sat Aug 23, 2:58 pm)
Navigation
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
Mel Gorman
Re: [PATCH 1/4] vmstat: remove zone->lock from walk_zones_in_node
Guenter Roeck
Re: [lm-sensors] Location for thermal drivers
David Woodhouse
Re: RFC: Moving firmware blobs out of the kernel.
Siddha, Suresh B
Re: [PATCH 2.6.21 review I] [11/25] x86: default to physical mode on hotplug CPU k...
Peter Zijlstra
Re: [patch 4/6] mm: merge populate and nopage into fault (fixes nonlinear)
git-commits-head
:
Linux Kernel Mailing List
[MIPS] Fix potential latency problem due to non-atomic cpu_wait.
Linux Kernel Mailing List
USB: rename USB_SPEED_VARIABLE to USB_SPEED_WIRELESS
Linux Kernel Mailing List
lib/vsprintf.c: fix bug omitting minus sign of numbers (module_param)
Linux Kernel Mailing List
[Bluetooth] Initiate authentication during connection establishment
Linux Kernel Mailing List
[POWERPC] 4xx: Add ppc40x_defconfig
linux-netdev
:
MERCEDES
Your mail id has won 950,000.00 in the MERCEDES Benz Online Promo.for claims send:
David Miller
Re: [PATCH] xen/netfront: do not mark packets of length < MSS as GSO
David Miller
Re: skb_segment() questions
Shan Wei
[RFC PATCH net-next 2/5]IPv6:netfilter: Send an ICMPv6 "Fragment Reassembly Timeou...
Stanislaw Gruszka
[PATCH 1/4] bnx2x: use smp_mb() to keep ordering of read write operations
git
:
Nicolas Sebrecht
git-svn died of signal 11 (was "3 failures on test t9100 (svn)")
Junio C Hamano
Re: [PATCH 2/2] Add url.<base>.pushInsteadOf: URL rewriting for push only
Martin Langhoff
Re: [PATCH] GIT commit statistics.
Alexandre Julliard
[PATCH] gitweb: Put back shortlog instead of graphiclog in the project list.
Josh Triplett
[PATCH 2/2] Add url.<base>.pushInsteadOf: URL rewriting for push only
openbsd-misc
:
Taisto Qvist XX
Re: AMD GEODE LX-800 just works with kernel from install42.iso and kernelpanics wi...
Nico Meijer
Re: gOS Develop Kit with VIA pc-1 Processor Platform VIA C7-D
Andreas Bihlmaier
Re: jetway board sensors (Fintek F71805F)
admin
Drive a 2009 car from R799p/m
Antti Harri
Re: how to create a sha256 hash
Colocation donated by:
Syndicate