All of lore.kernel.org
 help / color / mirror / Atom feed
From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@suse.de, linux-kernel@vger.kernel.org,
	devel@linuxdriverproject.org, virtualization@lists.osdl.org
Cc: "K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Hank Janssen <hjanssen@microsoft.com>
Subject: [PATCH 03/22] Staging: hv: Simplify the code for blkvsc_getgeo()
Date: Mon,  4 Apr 2011 15:47:52 -0700	[thread overview]
Message-ID: <1301957291-8035-3-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1301957291-8035-1-git-send-email-kys@microsoft.com>

We are making up the geometry anyway, keep it simple.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
---
 drivers/staging/hv/blkvsc_drv.c |   84 +++++---------------------------------
 1 files changed, 11 insertions(+), 73 deletions(-)

diff --git a/drivers/staging/hv/blkvsc_drv.c b/drivers/staging/hv/blkvsc_drv.c
index 12a9083..ad09917 100644
--- a/drivers/staging/hv/blkvsc_drv.c
+++ b/drivers/staging/hv/blkvsc_drv.c
@@ -277,82 +277,20 @@ static int blkvsc_open(struct block_device *bdev, fmode_t mode)
 
 static int blkvsc_getgeo(struct block_device *bd, struct hd_geometry *hg)
 {
-	sector_t total_sectors = get_capacity(bd->bd_disk);
-	sector_t cylinder_times_heads = 0;
-	sector_t temp = 0;
+	sector_t nsect = get_capacity(bd->bd_disk);
+	sector_t cylinders = nsect;
 
-	int sectors_per_track = 0;
-	int heads = 0;
-	int cylinders = 0;
-	int rem = 0;
-
-	if (total_sectors > (65535 * 16 * 255))
-		total_sectors = (65535 * 16 * 255);
-
-	if (total_sectors >= (65535 * 16 * 63)) {
-		sectors_per_track = 255;
-		heads = 16;
-
-		cylinder_times_heads = total_sectors;
-		/* sector_div stores the quotient in cylinder_times_heads */
-		rem = sector_div(cylinder_times_heads, sectors_per_track);
-	} else {
-		sectors_per_track = 17;
-
-		cylinder_times_heads = total_sectors;
-		/* sector_div stores the quotient in cylinder_times_heads */
-		rem = sector_div(cylinder_times_heads, sectors_per_track);
-
-		temp = cylinder_times_heads + 1023;
-		/* sector_div stores the quotient in temp */
-		rem = sector_div(temp, 1024);
-
-		heads = temp;
-
-		if (heads < 4)
-			heads = 4;
-
-
-		if (cylinder_times_heads >= (heads * 1024) || (heads > 16)) {
-			sectors_per_track = 31;
-			heads = 16;
-
-			cylinder_times_heads = total_sectors;
-			/*
-			 * sector_div stores the quotient in
-			 * cylinder_times_heads
-			 */
-			rem = sector_div(cylinder_times_heads,
-					 sectors_per_track);
-		}
-
-		if (cylinder_times_heads >= (heads * 1024)) {
-			sectors_per_track = 63;
-			heads = 16;
-
-			cylinder_times_heads = total_sectors;
-			/*
-			 * sector_div stores the quotient in
-			 * cylinder_times_heads
-			 */
-			rem = sector_div(cylinder_times_heads,
-					 sectors_per_track);
-		}
-	}
-
-	temp = cylinder_times_heads;
-	/* sector_div stores the quotient in temp */
-	rem = sector_div(temp, heads);
-	cylinders = temp;
-
-	hg->heads = heads;
-	hg->sectors = sectors_per_track;
+	/*
+	 * We are making up these values; let us keep it simple.
+	 */
+	hg->heads = 0xff;
+	hg->sectors = 0x3f;
+	sector_div(cylinders, hg->heads * hg->sectors);
 	hg->cylinders = cylinders;
-
-	DPRINT_INFO(BLKVSC_DRV, "CHS (%d, %d, %d)", cylinders, heads,
-		    sectors_per_track);
-
+	if ((sector_t)(hg->cylinders + 1) * hg->heads * hg->sectors < nsect)
+		hg->cylinders = 0xffff;
 	return 0;
+
 }
 
 
-- 
1.7.4.1

  parent reply	other threads:[~2011-04-04 22:47 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-04 22:46 [PATCH 00/22] Staging: hv: Cleanup storage drivers - Phase IV K. Y. Srinivasan
2011-04-04 22:47 ` [PATCH 01/22] Staging: hv: Get rid of blkvsc_media_changed() K. Y. Srinivasan
2011-04-04 22:47   ` K. Y. Srinivasan
2011-04-04 22:47   ` [PATCH 02/22] Staging: hv: Enable blkvsc_ioctl() K. Y. Srinivasan
2011-04-04 22:47     ` K. Y. Srinivasan
2011-04-04 22:47   ` K. Y. Srinivasan [this message]
2011-04-04 22:47   ` [PATCH 04/22] Staging: hv: Introduce a common function for issuing commands to the device K. Y. Srinivasan
2011-04-04 22:47     ` K. Y. Srinivasan
2011-04-04 22:47   ` [PATCH 05/22] Staging: hv: Get rid of blkvsc_do_read_capacity() K. Y. Srinivasan
2011-04-04 22:47   ` [PATCH 06/22] Staging: hv: Get rid of blkvsc_do_read_capacity16() K. Y. Srinivasan
2011-04-04 22:47     ` K. Y. Srinivasan
2011-04-04 22:47   ` [PATCH 07/22] Staging: hv: Get rid of the function blkvsc_do_flush() K. Y. Srinivasan
2011-04-04 22:47   ` [PATCH 08/22] Staging hv: Get rid of the state media_not_present K. Y. Srinivasan
2011-04-04 22:47     ` K. Y. Srinivasan
2011-04-04 22:47   ` [PATCH 09/22] Staging: hv: Get rid of the function blkvsc_revalidate_disk() K. Y. Srinivasan
2011-04-04 22:47     ` K. Y. Srinivasan
2011-04-04 22:47   ` [PATCH 10/22] Staging: hv: Simplify blkvsc_init_rw K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 11/22] Staging: hv: Get rid of some DPRINT_INFO() statements K. Y. Srinivasan
2011-04-04 22:48     ` K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 12/22] Staging: hv: Get rid of some DPRINT_DBG() calls K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 13/22] Staging: hv: Cleanup blkvsc_remove() K. Y. Srinivasan
2011-04-04 22:48     ` K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 14/22] Staging: hv: Cleanup storvsc_remove() K. Y. Srinivasan
2011-04-04 22:48     ` K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 15/22] Staging: hv: Get rid of the code to manage removable media K. Y. Srinivasan
2011-04-04 22:48     ` K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 16/22] Staging: hv: Get rid of some DPRINT_ERR() calls K. Y. Srinivasan
2011-04-04 22:48     ` K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 17/22] Staging: hv: Get rid of an unnecessary check in blkvsc_probe() K. Y. Srinivasan
2011-04-04 22:48     ` K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 18/22] Staging: hv: Cleanup blkvsc_open() K. Y. Srinivasan
2011-04-04 22:48     ` K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 19/22] Staging: hv: Fix a jump label (Cleanup) in blkvsc_drv K. Y. Srinivasan
2011-04-04 22:48     ` K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 20/22] Staging: hv: Fix a jump label (Remove) in blkvsc_drv.c K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 21/22] Staging: hv: Introduce a function to map channel properties onto block device info K. Y. Srinivasan
2011-04-04 22:48     ` K. Y. Srinivasan
2011-04-04 22:48   ` [PATCH 22/22] Staging: hv: Get rid of IDE details from blkvsc_drv.c K. Y. Srinivasan
  -- strict thread matches above, loose matches on Subject: below --
2011-04-06 23:03 [RESEND][PATCH 00/22] Staging: hv: Cleanup storage drivers - Phase IV K. Y. Srinivasan
2011-04-06 23:05 ` [PATCH 01/22] Staging: hv: Get rid of blkvsc_check_events() K. Y. Srinivasan
2011-04-06 23:05   ` [PATCH 03/22] Staging: hv: Simplify the code for blkvsc_getgeo() K. Y. Srinivasan

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=1301957291-8035-3-git-send-email-kys@microsoft.com \
    --to=kys@microsoft.com \
    --cc=devel@linuxdriverproject.org \
    --cc=gregkh@suse.de \
    --cc=haiyangz@microsoft.com \
    --cc=hjanssen@microsoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=virtualization@lists.osdl.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.