Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Dec 2006 16:56:57 +0200
From:      Vasil Dimov <vd@FreeBSD.org>
To:        freebsd-geom@freebsd.org
Subject:   graid3 device gives "Invalid argument" when requested to read >=128kb
Message-ID:  <20061229145657.GA24409@qlovarnika.bg.datamax>

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

--LZvS9be/3tNcYl/X
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hi,

I managed to create a graid3 array which returns "Invalid argument" when
I attempt to read more than 128k with a single read(2) call.

Here is the test program:

--- graid3_test.c begins here ---
#include <sys/types.h>
#include <sys/uio.h>

#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>

int
main(int argc, char **argv)
{
	char	buf[1048576];
	int	fd;
	ssize_t	ret;

	assert((fd =3D open("/dev/raid3/r3test", O_RDONLY)) !=3D -1);

	if ((ret =3D read(fd, buf, 8192*16)) =3D=3D -1)
		printf("%s\n", strerror(errno));
	else
		printf("ret: %zd\n", ret);

	close(fd);

	return 0;
}

/* EOF */
--- graid3_test.c ends here ---


# ./graid3_test
Invalid argument

If I change 8192*16 to 8192*15 it works fine:

# ./graid3_test
ret: 122880

This is what /dev/raid3/r3test looks like
(notice the sector size is 8192, that's why my test program is using
multiples of 8192):

# graid3 list
Geom name: r3test
State: COMPLETE
Components: 17
Flags: NONE
GenID: 0
SyncID: 1
ID: 4285731808
Zone64kFailed: 0
Zone64kRequested: 0
Zone16kFailed: 0
Zone16kRequested: 32
Zone4kFailed: 0
Zone4kRequested: 1280
Providers:
1. Name: raid3/r3test
   Mediasize: 536862720 (512M)
   Sectorsize: 8192
   Mode: r0w0e0
Consumers:
1. Name: ggate100
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 0
   Type: DATA
2. Name: ggate101
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 1
   Type: DATA
3. Name: ggate102
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 2
   Type: DATA
4. Name: ggate103
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 3
   Type: DATA
5. Name: ggate104
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 4
   Type: DATA
6. Name: ggate105
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 5
   Type: DATA
7. Name: ggate106
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 6
   Type: DATA
8. Name: ggate107
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 7
   Type: DATA
9. Name: ggate108
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 8
   Type: DATA
10. Name: ggate109
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 9
   Type: DATA
11. Name: ggate110
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 10
   Type: DATA
12. Name: ggate111
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 11
   Type: DATA
13. Name: ggate112
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 12
   Type: DATA
14. Name: ggate113
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 13
   Type: DATA
15. Name: ggate114
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 14
   Type: DATA
16. Name: ggate115
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 15
   Type: DATA
17. Name: ggate116
   Mediasize: 33554432 (32M)
   Sectorsize: 512
   Mode: r1w1e1
   State: ACTIVE
   Flags: NONE
   GenID: 0
   SyncID: 1
   Number: 16
   Type: PARITY

No such problems occur if the raid3 array is created with 9 (not 17)
disks.

Cheerz!

--=20
Vasil Dimov
gro.DSBeerF@dv
%
Never be afraid to tell the world who you are.
                -- Anonymous

--LZvS9be/3tNcYl/X
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----

iD8DBQFFlSy5Fw6SP/bBpCARAvRRAJwMb+iQf8PnBTdc6ssw04bV1s/NpQCgteyn
w/vWNIkADDp9H1ADRl9wyJk=
=FNx5
-----END PGP SIGNATURE-----

--LZvS9be/3tNcYl/X--



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