Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Jul 1996 14:01:31 +0000
From:      "Frank ten Wolde" <franky@pinewood.nl>
To:        freebsd-hackers@FreeBSD.ORG
Subject:   >2G partition blues
Message-ID:  <9607091401.ZM9946@pwood1.pinewood.nl>

next in thread | raw e-mail | index | archive | help
Hello,

I have a bug to report.

I experience severe problems when trying to setup a 4.3 Gbdisk with
sysinstall (2.1-RELEASE).  The problem is in de code in 
.../src/release/libdisk/blocks.c in the lseek line 37:

	void
	write_block(int fd, daddr_t block, void *foo)
	{
        	if (-1 == lseek(fd,block * 512,SEEK_SET))	<=== PROBLEM
               		err(1,"lseek");
        	if (512 != write(fd,foo, 512))
                	err(1,"write");
	}

When 'block' is larger than 4194303 (>2G partition), the result 
'block * 512' will yield a negative number, which is cast to (off_t), 
which is also NEGATIVE.
Strangely the lseek() succeeds, but the following write(2) fails:

	write: Input/Output Error.

The correct code should first cast 'block' to (off_t):

        	if (-1 == lseek(fd,(off_t) block * 512,SEEK_SET))
		                   ^^^^^^^^

There is a similar problem at line 27, in the read_block() funtion.

I suspect that FreeBSD has many more such problems, as I experience
unexplained errors when using the disklabel utility as well (2.1-RELEASE
and 2.2-960612-SNAPSHOT) if I try to use slices (disklabel to the entire
disk -- without slices -- apparently works).

There is a similar problem in sysinstall in the 2.2-960612-SNAPSHOT
release.  Sysinstall aborts with:

	Debugger("Slice got negative blocknumber") called.

I did not take a look at the actual code for 2.2-960612-SNAPSHOT.

Maybe this can be fixed in future releases of FreeBSD :-)

Regards,

-Frank ten Wolde

-- 
----------------------------------------------------------------------
F.W. ten Wolde (PA3FMT)                       Pinewood Automation B.V.
E-mail: franky@pinewood.nl                    Kluyverweg 2a
Phone: +31-15 2682543                         2629 HT  Delft



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9607091401.ZM9946>