Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b4ab726c92f8a2c1635958212e8933309de0a37a
Commit:     b4ab726c92f8a2c1635958212e8933309de0a37a
Parent:     c9f56a801a3a9d76119868a687bc220d29055625
Author:     Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
AuthorDate: Fri Feb 1 23:09:26 2008 +0100
Committer:  Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
CommitDate: Fri Feb 1 23:09:26 2008 +0100

    ide-cd: add ide_cd_drain_data() helper
    
    Add ide_cd_drain_data() and use it in cdrom_{buffer_sectors,read_intr}()
    (as a nice side-effect this cuts 0.5kB of code from ide-cd.o).
    
    There should be no functionality changes caused by this patch.
    
    Signed-off-by: Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
---
 drivers/ide/ide-cd.c |   28 +++++++++++++++-------------
 1 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 6c31ce1..f0191f0 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -626,6 +626,16 @@ static void ide_cd_pad_transfer(ide_drive_t *drive, 
xfer_func_t *xf, int len)
        }
 }
 
+static void ide_cd_drain_data(ide_drive_t *drive, int nsects)
+{
+       while (nsects > 0) {
+               static char dum[SECTOR_SIZE];
+
+               drive->hwif->atapi_input_bytes(drive, dum, sizeof(dum));
+               nsects--;
+       }
+}
+
 /*
  * Buffer up to SECTORS_TO_TRANSFER sectors from the drive in our sector
  * buffer.  Once the first sector is added, any subsequent sectors are
@@ -664,11 +674,7 @@ static void cdrom_buffer_sectors (ide_drive_t *drive, 
unsigned long sector,
        }
 
        /* Throw away any remaining data. */
-       while (sectors_to_transfer > 0) {
-               static char dum[SECTOR_SIZE];
-               HWIF(drive)->atapi_input_bytes(drive, dum, sizeof (dum));
-               --sectors_to_transfer;
-       }
+       ide_cd_drain_data(drive, sectors_to_transfer);
 }
 
 /*
@@ -791,14 +797,10 @@ static ide_startstop_t cdrom_read_intr (ide_drive_t 
*drive)
           any of the leading sectors. */
        nskip = min_t(int, rq->current_nr_sectors - bio_cur_sectors(rq->bio), 
sectors_to_transfer);
 
-       while (nskip > 0) {
-               /* We need to throw away a sector. */
-               static char dum[SECTOR_SIZE];
-               HWIF(drive)->atapi_input_bytes(drive, dum, sizeof (dum));
-
-               --rq->current_nr_sectors;
-               --nskip;
-               --sectors_to_transfer;
+       if (nskip > 0) {
+               ide_cd_drain_data(drive, nskip);
+               rq->current_nr_sectors -= nskip;
+               sectors_to_transfer -= nskip;
        }
 
        /* Now loop while we still have data to read from the drive. */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to