public inbox for util-linux@vger.kernel.org
 help / color / mirror / Atom feed
* Re: Correct parameter size for BLKSSZGET ioctl.
       [not found] <CAF1GSti2xbHGtBx4Qq8Br9unEM_GE8GJ99fzoRm6qKaun7MHZw@mail.gmail.com>
@ 2013-11-02 23:44 ` Theodore Ts'o
  2013-11-02 23:46   ` [PATCH] blkdiscard: BLKSSZGET fills in an int, not a uint64 Theodore Ts'o
  0 siblings, 1 reply; 3+ messages in thread
From: Theodore Ts'o @ 2013-11-02 23:44 UTC (permalink / raw)
  To: Jason Cipriani; +Cc: linux-kernel, util-linux

On Fri, Nov 01, 2013 at 08:29:26PM -0400, Jason Cipriani wrote:
> In blkdiscard in util-linux, at least since version 2.23, the
> following code is used to retrieve a device's physical sector size:
> 
>   uint64_t secsize;
>   ioctl(fd, BLKSSZGET, &secsize);
> 
> On my machine (Ubuntu 12.04 -- 3.2.0-55-generic-pae #85-Ubuntu SMP Wed
> Oct 2 14:03:15 UTC 2013 i686 i686 i386 GNU/Linux) this yields
> incorrect results as it seems a 32-bit int is expected, this causes
> subsequent sector alignment calculations in blkdiscard to be
> incorrect, which in turn causes blkdiscards trim ioctl's to fail in
> certain situations (or even worse, to trim the wrong blocks).

BLKSSZGET returns an int.  If you look at the sources of util-linux
v2.23, you'll see it passes an int to BLKSSZGET in 

	sys-utils/blkdiscard.c
	lib/blkdev.c

E2fsprogs also expects BLKSSZGET to return an int, and if you look at
the kernel sources, it very clearly returns an int.

The one place it doesn't is in sys-utils/blkdiscard.c, where as you
have noted, it is passing in a uint64 to BLKSSZGET.  This looks like
it's a bug in sys-util/blkdiscard.c.

I'll send a proposed patch in the next e-mail message.

     	    	     	      	  - Ted

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH] blkdiscard: BLKSSZGET fills in an int, not a uint64
  2013-11-02 23:44 ` Correct parameter size for BLKSSZGET ioctl Theodore Ts'o
@ 2013-11-02 23:46   ` Theodore Ts'o
  2013-11-04 13:59     ` Karel Zak
  0 siblings, 1 reply; 3+ messages in thread
From: Theodore Ts'o @ 2013-11-02 23:46 UTC (permalink / raw)
  To: util-linux; +Cc: jason.cipriani, Theodore Ts'o

Reported-by: Jason Cipriani <jason.cipriani@gmail.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---
 sys-utils/blkdiscard.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sys-utils/blkdiscard.c b/sys-utils/blkdiscard.c
index af9ed66..2ddcdb1 100644
--- a/sys-utils/blkdiscard.c
+++ b/sys-utils/blkdiscard.c
@@ -70,8 +70,8 @@ static void __attribute__((__noreturn__)) usage(FILE *out)
 int main(int argc, char **argv)
 {
 	char *path;
-	int c, fd, verbose = 0, secure = 0;
-	uint64_t end, blksize, secsize, range[2];
+	int c, fd, verbose = 0, secure = 0, secsize;
+	uint64_t end, blksize, range[2];
 	struct stat sb;
 
 	static const struct option longopts[] = {
-- 
1.7.12.rc0.22.gcdd159b


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] blkdiscard: BLKSSZGET fills in an int, not a uint64
  2013-11-02 23:46   ` [PATCH] blkdiscard: BLKSSZGET fills in an int, not a uint64 Theodore Ts'o
@ 2013-11-04 13:59     ` Karel Zak
  0 siblings, 0 replies; 3+ messages in thread
From: Karel Zak @ 2013-11-04 13:59 UTC (permalink / raw)
  To: Theodore Ts'o; +Cc: util-linux, jason.cipriani

On Sat, Nov 02, 2013 at 07:46:06PM -0400, Theodore Ts'o wrote:
>  sys-utils/blkdiscard.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

 Applied, thanks!

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-11-04 13:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CAF1GSti2xbHGtBx4Qq8Br9unEM_GE8GJ99fzoRm6qKaun7MHZw@mail.gmail.com>
2013-11-02 23:44 ` Correct parameter size for BLKSSZGET ioctl Theodore Ts'o
2013-11-02 23:46   ` [PATCH] blkdiscard: BLKSSZGET fills in an int, not a uint64 Theodore Ts'o
2013-11-04 13:59     ` Karel Zak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox