From: Boaz Harrosh <boaz@plexistor.com>
To: Jens Axboe <axboe@fb.com>, Matthew Wilcox <willy@linux.intel.com>,
Dmitry Monakhov <dmonakhov@openvz.org>
Cc: Ross Zwisler <ross.zwisler@linux.intel.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: [PATCH 3/5] brd: Add getgeo to block ops
Date: Wed, 27 Aug 2014 18:28:25 +0300 [thread overview]
Message-ID: <53FDF919.6020006@plexistor.com> (raw)
In-Reply-To: <53FDF7AD.5000709@plexistor.com>
From: Boaz Harrosh <boaz@plexistor.com>
Some programs like fdisk, require HDIO_GETGEO to work, which requires we
implement getgeo.
We set all hd_geometry members to 1, because this way fdisk
math will not try its crazy geometry math and get stuff totally wrong.
I was trying to get some values that will make fdisk Want to align
first sector on 4K (like 8, 16, 20, ... sectors) but nothing worked,
I searched the net the math is not your regular simple multiplication
at all.
If you managed to get these please tell me. I would love to solve
this.
But for now we use 4k physical sectors for fixing fdisk alignment
issues, and setting these here to something that will not make
fdisk serve us with crazy numbers.
Signed-off-by: Boaz Harrosh <boaz@plexistor.com>
---
drivers/block/brd.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/block/brd.c b/drivers/block/brd.c
index 78fe510..f841d9e 100644
--- a/drivers/block/brd.c
+++ b/drivers/block/brd.c
@@ -19,6 +19,7 @@
#include <linux/radix-tree.h>
#include <linux/fs.h>
#include <linux/slab.h>
+#include <linux/hdreg.h>
#include <asm/uaccess.h>
@@ -424,6 +425,23 @@ static int brd_ioctl(struct block_device *bdev, fmode_t mode,
return error;
}
+static int brd_getgeo(struct block_device *bd, struct hd_geometry *geo)
+{
+ /* Just tell fdisk to get out of the way. The math here is so
+ * convoluted and does not make any sense at all. With all 1s
+ * The math just gets out of the way.
+ * NOTE: I was trying to get some values that will make fdisk
+ * Want to align first sector on 4K (like 8, 16, 20, ... sectors) but
+ * nothing worked, I searched the net the math is not your regular
+ * simple multiplication at all. If you managed to get these please
+ * fix here. For now we use 4k physical sectors for this
+ */
+ geo->heads = 1;
+ geo->sectors = 1;
+ geo->cylinders = 1;
+ return 0;
+}
+
static const struct block_device_operations brd_fops = {
.owner = THIS_MODULE,
.rw_page = brd_rw_page,
@@ -431,6 +449,7 @@ static const struct block_device_operations brd_fops = {
#ifdef CONFIG_BLK_DEV_XIP
.direct_access = brd_direct_access,
#endif
+ .getgeo = brd_getgeo,
};
/*
--
1.9.3
next prev parent reply other threads:[~2014-08-27 15:28 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-27 15:22 [PATCHSET 0/5 v2] brd: partition fixes Boaz Harrosh
2014-08-27 15:25 ` [PATCH 1/5] axonram: Fix bug in direct_access Boaz Harrosh
2014-08-27 15:27 ` [PATCH 2/5] Change direct_access calling convention Boaz Harrosh
2014-08-27 15:28 ` Boaz Harrosh [this message]
2014-08-27 17:53 ` [PATCH 3/5] brd: Add getgeo to block ops Matthew Wilcox
2014-08-28 7:26 ` Boaz Harrosh
2014-08-28 15:11 ` Matthew Wilcox
2014-08-28 15:43 ` Boaz Harrosh
2014-08-27 15:30 ` [PATCH 4/5] brd: Fix all partitions BUGs Boaz Harrosh
2014-08-27 15:32 ` [PATCH 5/5] brd: Request from fdisk 4k alignment Boaz Harrosh
2014-08-27 15:45 ` [PATCHSET 0/5 v2] brd: partition fixes Dmitry Monakhov
2014-08-27 15:57 ` Boaz Harrosh
2014-09-01 10:15 ` Boaz Harrosh
2014-09-09 12:10 ` Boaz Harrosh
2014-09-09 14:25 ` Jens Axboe
2014-09-28 10:45 ` Boaz Harrosh
2014-10-19 17:46 ` Boaz Harrosh
2014-11-04 16:17 ` Boaz Harrosh
2014-11-05 0:50 ` Jens Axboe
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=53FDF919.6020006@plexistor.com \
--to=boaz@plexistor.com \
--cc=axboe@fb.com \
--cc=dmonakhov@openvz.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ross.zwisler@linux.intel.com \
--cc=willy@linux.intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).