graid3 device gives "Invalid argument" when requested to read
>=128kb
Vasil Dimov
vd at FreeBSD.org
Fri Dec 29 06:56:59 PST 2006
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 = open("/dev/raid3/r3test", O_RDONLY)) != -1);
if ((ret = read(fd, buf, 8192*16)) == -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!
--
Vasil Dimov
gro.DSBeerF at dv
%
Never be afraid to tell the world who you are.
-- Anonymous
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 155 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-geom/attachments/20061229/32de8ad0/attachment.pgp
More information about the freebsd-geom
mailing list