From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: Borislav Petkov <bbpetkov@yahoo.de>
Cc: linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org
Subject: Re: [PATCH 07/21] ide-floppy: remove struct idefloppy_capacity_descriptor
Date: Sat, 12 Jan 2008 01:59:01 +0100 [thread overview]
Message-ID: <200801120159.01194.bzolnier@gmail.com> (raw)
In-Reply-To: <1200052699-28420-8-git-send-email-bbpetkov@yahoo.de>
On Friday 11 January 2008, Borislav Petkov wrote:
> We test here for updated capacity descriptors by checking whether the media
> has changed instead of memcmp-ing with a cached copy of the capacity
> descriptors.
>
> Also:
>
> - remove one of 2 consecutive if (!i)-tests.
> - start loop at 1 in idefloppy_get_format_capacities() since userspace doesn't
> need the current/maximum capacity descriptor. i.e the first one.
> - fix comments formatting
>
> Signed-off-by: Borislav Petkov <bbpetkov@yahoo.de>
> ---
> drivers/ide/ide-floppy.c | 132 +++++++++++++++++----------------------------
> 1 files changed, 50 insertions(+), 82 deletions(-)
>
> diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
> index 679d48e..5c85833 100644
> --- a/drivers/ide/ide-floppy.c
> +++ b/drivers/ide/ide-floppy.c
> @@ -119,29 +119,7 @@ typedef struct idefloppy_packet_command_s {
>
> #define PC_SUPPRESS_ERROR 6 /* Suppress error reporting */
>
> -/*
> - * Format capacity
> - */
> -typedef struct {
> - u8 reserved[3];
> - u8 length; /* Length of the following descriptors in bytes */
> -} idefloppy_capacity_header_t;
minor nitpick:
idefloppy_capacity_header_t removal wasn't mentioned in the patch description
[...]
> @@ -1229,17 +1205,16 @@ static int idefloppy_get_sfrp_bit(ide_drive_t *drive)
> }
>
> /*
> - * Determine if a media is present in the floppy drive, and if so,
> - * its LBA capacity.
> + * Determine if a media is present in the floppy drive, and if so, its LBA
> + * capacity.
> */
> -static int idefloppy_get_capacity (ide_drive_t *drive)
> +static int idefloppy_get_capacity(ide_drive_t *drive)
Care to rename it to ide_floppy_get_capacity() while at it
(it has only two users)?
> {
> idefloppy_floppy_t *floppy = drive->driver_data;
> idefloppy_pc_t pc;
> - idefloppy_capacity_header_t *header;
> - idefloppy_capacity_descriptor_t *descriptor;
> - int i, descriptors, rc = 1, blocks, length;
> -
> + int i, desc_cnt, rc = 1, blocks, length;
> + u8 header_len;
desc_cnt (== header_len / 8) can be u8 as well
> drive->bios_cyl = 0;
> drive->bios_head = drive->bios_sect = 0;
> floppy->blocks = 0;
> @@ -1251,17 +1226,17 @@ static int idefloppy_get_capacity (ide_drive_t *drive)
> printk(KERN_ERR "ide-floppy: Can't get floppy parameters\n");
> return 1;
> }
> - header = (idefloppy_capacity_header_t *) pc.buffer;
> - descriptors = header->length / sizeof(idefloppy_capacity_descriptor_t);
> - descriptor = (idefloppy_capacity_descriptor_t *) (header + 1);
> + header_len = pc.buffer[3];
> + desc_cnt = header_len / 8; /* capacity descriptor of 8 bytes */
>
> - for (i = 0; i < descriptors; i++, descriptor++) {
> - blocks = descriptor->blocks = be32_to_cpu(descriptor->blocks);
> - length = descriptor->length = be16_to_cpu(descriptor->length);
> + for (i = 0; i < desc_cnt; i++) {
> + unsigned int desc_start = 4 + i*8;
missing newline
> + blocks = be32_to_cpu(*(u32 *)&pc.buffer[desc_start]);
> + length = be16_to_cpu(*(u16 *)&pc.buffer[desc_start + 6]);
if the last debug_log() call in the loop will be moved here
> - if (!i)
> + if (!i)
> {
the 'if (!i)' can be replaced with:
if (i)
continue;
> - switch (descriptor->dc) {
> + switch (pc.buffer[desc_start + 4] & 0x03) {
> /* Clik! drive returns this instead of CAPACITY_CURRENT */
> case CAPACITY_UNFORMATTED:
> if (!test_bit(IDEFLOPPY_CLIK_DRIVE, &floppy->flags))
> @@ -1272,11 +1247,11 @@ static int idefloppy_get_capacity (ide_drive_t *drive)
> break;
> case CAPACITY_CURRENT:
> /* Normal Zip/LS-120 disks */
> - if (memcmp(descriptor, &floppy->capacity, sizeof (idefloppy_capacity_descriptor_t)))
> + if ((1UL << IDEFLOPPY_MEDIA_CHANGED) & floppy->flags)
Same issue as with similar change in patch #6:
[ Please note that idefloppy_get_capacity() is called from idefloppy_setup()
and IDEFLOPPY_MEDIA_CHANGED flag is first set in idefloppy_open(). ]
IMO it is the best to leave floppy->capacity alone for now.
> printk(KERN_INFO "%s: %dkB, %d blocks, %d "
> "sector size\n", drive->name,
> blocks * length / 1024, blocks, length);
> - floppy->capacity = *descriptor;
> +
> if (!length || length % 512) {
> printk(KERN_NOTICE "%s: %d bytes block size "
> "not supported\n", drive->name, length);
> @@ -1303,9 +1278,8 @@ static int idefloppy_get_capacity (ide_drive_t *drive)
> "in drive\n", drive->name);
> break;
> }
> - }
> - if (!i) {
> - debug_log("Descriptor 0 Code: %d\n", descriptor->dc);
> + debug_log("Descriptor 0 Code: %d\n",
> + pc.buffer[desc_start + 4] & 0x03);
minor CodingStyle nitpick:
debug_log("Descriptor 0 Code: %d\n",
pc.buffer[desc_start + 4] & 0x03);
> }
> debug_log("Descriptor %d: %dkB, %d blocks, %d sector size\n",
> i, blocks * length / 1024, blocks, length);
> @@ -1321,35 +1295,32 @@ static int idefloppy_get_capacity (ide_drive_t *drive)
> }
>
> /*
> -** Obtain the list of formattable capacities.
> -** Very similar to idefloppy_get_capacity, except that we push the capacity
> -** descriptors to userland, instead of our own structures.
> -**
> -** Userland gives us the following structure:
> -**
> -** struct idefloppy_format_capacities {
> -** int nformats;
> -** struct {
> -** int nblocks;
> -** int blocksize;
> -** } formats[];
> -** } ;
> -**
> -** userland initializes nformats to the number of allocated formats[]
> -** records. On exit we set nformats to the number of records we've
> -** actually initialized.
> -**
> -*/
> + * Obtain the list of formattable capacities.
> + * Very similar to idefloppy_get_capacity, except that we push the capacity
> + * descriptors to userland, instead of our own structures.
> + *
> + * Userland gives us the following structure:
> + *
> + * struct idefloppy_format_capacities {
> + * int nformats;
> + * struct {
> + * int nblocks;
> + * int blocksize;
> + * } formats[];
> + * } ;
nitpicking taken to an extreme:
I would replace spaces with tabs while at it...
> + *
> + * userland initializes nformats to the number of allocated formats[]
> + * records. On exit we set nformats to the number of records we've
> + * actually initialized.
> + *
> + */
>
> static int idefloppy_get_format_capacities(ide_drive_t *drive, int __user *arg)
ide_floppy_get_format_capacities() (only one user)? :)
> {
> idefloppy_pc_t pc;
would be nice to fix this whitespace damage while at it
> - idefloppy_capacity_header_t *header;
> - idefloppy_capacity_descriptor_t *descriptor;
> - int i, descriptors, blocks, length;
> - int u_array_size;
> - int u_index;
> + int i, desc_cnt, blocks, length, u_array_size, u_index;
> int __user *argp;
> + u8 header_len;
desc_cnt can be u8
> if (get_user(u_array_size, arg))
> return (-EFAULT);
> @@ -1362,28 +1333,25 @@ static int idefloppy_get_format_capacities(ide_drive_t *drive, int __user *arg)
> printk(KERN_ERR "ide-floppy: Can't get floppy parameters\n");
> return (-EIO);
> }
Care to fix the above whitespace damage while at it?
[...]
Otherwise it looks good. Please recast/resubmit.
next prev parent reply other threads:[~2008-01-12 14:26 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-11 11:57 [PATCH 00/21] ide-floppy redux v2 Borislav Petkov
2008-01-11 11:57 ` Borislav Petkov
2008-01-11 11:57 ` [PATCH 01/21] ide-floppy: convert to generic packet commands Borislav Petkov
2008-01-11 11:57 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 02/21] ide-floppy: replace ntoh{s,l} and hton{s,l} calls with the generic byteorder Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 03/21] ide-floppy: remove unnecessary ->handler != NULL check Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 04/21] ide-floppy: cleanup and unify debugging macro calls Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 05/21] ide-floppy: remove struct idefloppy_capabilities_page Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 06/21] ide-floppy: remove struct idefloppy_flexible_disk_page Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 07/21] ide-floppy: remove struct idefloppy_capacity_descriptor Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 08/21] ide-floppy: remove struct idefloppy_inquiry_result Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 09/21] ide-floppy: remove struct idefloppy_request_sense_result Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 10/21] ide-floppy: remove struct idefloppy_mode_parameter_header Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 11/21] ide-floppy: fix comments formatting Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 12/21] ide-floppy: factor out ioctl handlers from idefloppy_ioctl() Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
[not found] ` <1200052699-28420-14-git-send-email-bbpetkov@yahoo.de>
2008-01-11 11:58 ` [PATCH 14/21] ide-floppy: mv idefloppy_{should_,}report_error Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 15/21] ide-floppy: disambiguate function names Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
[not found] ` <1200052699-28420-17-git-send-email-bbpetkov@yahoo.de>
[not found] ` <1200052699-28420-18-git-send-email-bbpetkov@yahoo.de>
2008-01-11 11:58 ` [PATCH 18/21] ide-floppy: fix error handling in idefloppy_probe() Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 19/21] ide-floppy: fix most of the remaining checkpatch.pl issues Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 20/21] ide-floppy: merge idefloppy_{input,output}_buffers Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-11 11:58 ` [PATCH 21/21] ide-floppy: remove atomic test_*bit macros Borislav Petkov
2008-01-11 11:58 ` Borislav Petkov
2008-01-12 20:19 ` Bartlomiej Zolnierkiewicz
2008-01-12 20:19 ` [PATCH 20/21] ide-floppy: merge idefloppy_{input,output}_buffers Bartlomiej Zolnierkiewicz
2008-01-12 20:18 ` [PATCH 19/21] ide-floppy: fix most of the remaining checkpatch.pl issues Bartlomiej Zolnierkiewicz
2008-01-12 20:18 ` [PATCH 18/21] ide-floppy: fix error handling in idefloppy_probe() Bartlomiej Zolnierkiewicz
2008-01-12 21:12 ` Borislav Petkov
2008-01-12 20:16 ` [PATCH 14/21] ide-floppy: mv idefloppy_{should_,}report_error Bartlomiej Zolnierkiewicz
2008-01-12 20:16 ` [PATCH 12/21] ide-floppy: factor out ioctl handlers from idefloppy_ioctl() Bartlomiej Zolnierkiewicz
2008-01-12 20:16 ` [PATCH 11/21] ide-floppy: fix comments formatting Bartlomiej Zolnierkiewicz
2008-01-12 0:59 ` Bartlomiej Zolnierkiewicz [this message]
2008-01-12 0:58 ` [PATCH 06/21] ide-floppy: remove struct idefloppy_flexible_disk_page Bartlomiej Zolnierkiewicz
2008-01-12 20:15 ` Bartlomiej Zolnierkiewicz
2008-01-12 20:38 ` Borislav Petkov
2008-01-12 21:32 ` Bartlomiej Zolnierkiewicz
2008-01-11 23:56 ` [PATCH 04/21] ide-floppy: cleanup and unify debugging macro calls Bartlomiej Zolnierkiewicz
2008-01-12 13:46 ` [PATCH 00/21] ide-floppy redux v2 Bartlomiej Zolnierkiewicz
2008-01-12 20:14 ` Bartlomiej Zolnierkiewicz
2008-01-12 20:51 ` Borislav Petkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200801120159.01194.bzolnier@gmail.com \
--to=bzolnier@gmail.com \
--cc=bbpetkov@yahoo.de \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.