David, thanks for your help. There was a bug in the glfs patched fuse and a fixed version is uploaded at - http://ftp.zresearch.com/pub/gluster/glusterfs/fuse/ Please try the glfs4 version and it now handles block splits more correctly. Thanks! avati On 9/9/07, David Rotermund <davrot@xxxxxxxxxxxxxxxxxxx> wrote: > > Hi, > > we generated some strace files. The whole thing is getting even more > strange. > > The program write_staticmem.c is able to write > on ext3: (4 MB chunks) [output_staticmem_ext3.txt] and > on clusterfs: (1MB chunks [output_staticmem_glusterfs_1MB.txt] > and 4 MB chunks [output_staticmem_glusterfs_4MB.txt]). > > So far so good. > > The program write_dynamicmem.c is able to write > on ext3 (4 MB chunks) [output_dynamicmem_ext3.txt] and > on clusterfs (1MB chunks [output_dynamicmem_glusterfs_1MB.txt]). > But writing 4MB chunks [output_dynamicmem_glusterfs_4MB.txt] on > glusterfs is NOT (!) possible. > > Thank you for your help! > > best regards > David > > > Anand Avati schrieb: > > David, > > can you post an strace of the program execution where 2MB fwrite() > failed? > > > > thanks, > > avati > > > > 2007/9/9, David Rotermund <gfs@xxxxxxxxxxxxxxxxxxx > > <mailto:gfs@xxxxxxxxxxxxxxxxxxx>>: > > > > Hi, > > > > I downloaded and installed: > > glusterfs-1.3.1.tar.gz (718945 Bytes; ./configure --prefix=/usr > > --disable-ibverbs) > > and > > fuse-2.7.0-glfs3.tar.gz (517370 Bytes; ./configure > > --enable-kernel-module ) > > > > > > best regards > > David > > > > Anand Avati schrieb: > > > > > > > Please try upgrading to the lastest FUSE (including kernel > > > module) at - > > > > http://ftp.zresearch.com/pub/gluster/glusterfs/fuse/ > > > > (the latest is glfs3 patched). The newer fuse gets less > > surprised > > > > detecting changed inode numbers. > > > > > > Thank you! > > > > > > This error is gone but was replaced by another ugly problem. > > If we try > > > to write with fwrite a block of data which is larger than 2 > > MByte then > > > we only get a empty file as result (fwrite also reports that > > 0 Bytes > > > have been written). Smaller block-sizes like e.g. > > (1024*1024*2)-1 are > > > working. This is very confusing. > > > > > > Is this a known problem? > > > > > > > > > are you using glfs3 or older version? > > > > > > avati > > > > > > -- > > > It always takes longer than you expect, even when you take into > > account > > > Hofstadter's Law. > > > > > > -- Hofstadter's Law > > > > > > > > > > -- > > It always takes longer than you expect, even when you take into account > > Hofstadter's Law. > > > > -- Hofstadter's Law > > > execve("/home/udo/Desktop/Testqueue/write_dynamicmem", > ["/home/udo/Desktop/Testqueue/writ"...], [/* 28 vars */]) = 0 > brk(0) = 0x601000 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaaab000 > uname({sys="Linux", node="nc7", ...}) = 0 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.cache", O_RDONLY) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=142108, ...}) = 0 > mmap(NULL, 142108, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aaaaaaac000 > close(3) = 0 > open("/lib64/libc.so.6", O_RDONLY) = 3 > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\333"..., 832) > = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=1689824, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaacf000 > mmap(0x32f7200000, 3469528, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x32f7200000 > mprotect(0x32f7347000, 2093056, PROT_NONE) = 0 > mmap(0x32f7546000, 20480, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x146000) = 0x32f7546000 > mmap(0x32f754b000, 16600, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x32f754b000 > close(3) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaad0000 > arch_prctl(ARCH_SET_FS, 0x2aaaaaad0230) = 0 > mprotect(0x32f7546000, 16384, PROT_READ) = 0 > mprotect(0x32f6419000, 4096, PROT_READ) = 0 > munmap(0x2aaaaaaac000, 142108) = 0 > mmap(NULL, 4198400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x2aaaaaad1000 > brk(0) = 0x601000 > brk(0x622000) = 0x622000 > open("test.dat", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaed2000 > write(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 4194304) = 4194304 > close(3) = 0 > munmap(0x2aaaaaed2000, 4096) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaed2000 > write(1, "Wrote 4194304 bytes.\n", 21) = 21 > munmap(0x2aaaaaad1000, 4198400) = 0 > exit_group(0) = ? > > execve("/home/udo/Desktop/Testqueue/write_dynamicmem", > ["/home/udo/Desktop/Testqueue/writ"...], [/* 28 vars */]) = 0 > brk(0) = 0x601000 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaaab000 > uname({sys="Linux", node="nc7", ...}) = 0 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.cache", O_RDONLY) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=142108, ...}) = 0 > mmap(NULL, 142108, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aaaaaaac000 > close(3) = 0 > open("/lib64/libc.so.6", O_RDONLY) = 3 > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\333"..., 832) > = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=1689824, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaacf000 > mmap(0x32f7200000, 3469528, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x32f7200000 > mprotect(0x32f7347000, 2093056, PROT_NONE) = 0 > mmap(0x32f7546000, 20480, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x146000) = 0x32f7546000 > mmap(0x32f754b000, 16600, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x32f754b000 > close(3) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaad0000 > arch_prctl(ARCH_SET_FS, 0x2aaaaaad0230) = 0 > mprotect(0x32f7546000, 16384, PROT_READ) = 0 > mprotect(0x32f6419000, 4096, PROT_READ) = 0 > munmap(0x2aaaaaaac000, 142108) = 0 > mmap(NULL, 1052672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x2aaaaaad1000 > brk(0) = 0x601000 > brk(0x622000) = 0x622000 > open("test.dat", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x2aaaaabd2000 > write(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 1048576) = 1048576 > close(3) = 0 > munmap(0x2aaaaabd2000, 1048576) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaabd2000 > write(1, "Wrote 1048576 bytes.\n", 21) = 21 > munmap(0x2aaaaaad1000, 1052672) = 0 > exit_group(0) = ? > > execve("/home/udo/Desktop/Testqueue/write_dynamicmem", > ["/home/udo/Desktop/Testqueue/writ"...], [/* 28 vars */]) = 0 > brk(0) = 0x601000 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaaab000 > uname({sys="Linux", node="nc7", ...}) = 0 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.cache", O_RDONLY) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=142108, ...}) = 0 > mmap(NULL, 142108, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aaaaaaac000 > close(3) = 0 > open("/lib64/libc.so.6", O_RDONLY) = 3 > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\333"..., 832) > = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=1689824, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaacf000 > mmap(0x32f7200000, 3469528, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x32f7200000 > mprotect(0x32f7347000, 2093056, PROT_NONE) = 0 > mmap(0x32f7546000, 20480, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x146000) = 0x32f7546000 > mmap(0x32f754b000, 16600, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x32f754b000 > close(3) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaad0000 > arch_prctl(ARCH_SET_FS, 0x2aaaaaad0230) = 0 > mprotect(0x32f7546000, 16384, PROT_READ) = 0 > mprotect(0x32f6419000, 4096, PROT_READ) = 0 > munmap(0x2aaaaaaac000, 142108) = 0 > mmap(NULL, 4198400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x2aaaaaad1000 > brk(0) = 0x601000 > brk(0x622000) = 0x622000 > open("test.dat", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x2aaaaaed2000 > write(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 4194304) = -1 EIO (Input/output error) > close(3) = 0 > munmap(0x2aaaaaed2000, 1048576) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaed2000 > write(1, "Wrote 0 bytes.\n", 15) = 15 > munmap(0x2aaaaaad1000, 4198400) = 0 > exit_group(0) = ? > > execve("/home/udo/Desktop/Testqueue/write_staticmem", > ["/home/udo/Desktop/Testqueue/writ"...], [/* 28 vars */]) = 0 > brk(0) = 0xa01000 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaaab000 > uname({sys="Linux", node="nc7", ...}) = 0 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.cache", O_RDONLY) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=142108, ...}) = 0 > mmap(NULL, 142108, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aaaaaaac000 > close(3) = 0 > open("/lib64/libc.so.6", O_RDONLY) = 3 > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\333"..., 832) > = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=1689824, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaacf000 > mmap(0x32f7200000, 3469528, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x32f7200000 > mprotect(0x32f7347000, 2093056, PROT_NONE) = 0 > mmap(0x32f7546000, 20480, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x146000) = 0x32f7546000 > mmap(0x32f754b000, 16600, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x32f754b000 > close(3) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaad0000 > arch_prctl(ARCH_SET_FS, 0x2aaaaaad0230) = 0 > mprotect(0x32f7546000, 16384, PROT_READ) = 0 > mprotect(0x32f6419000, 4096, PROT_READ) = 0 > munmap(0x2aaaaaaac000, 142108) = 0 > brk(0) = 0xa01000 > brk(0xa22000) = 0xa22000 > open("test.dat", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaaac000 > write(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 4194304) = 4194304 > close(3) = 0 > munmap(0x2aaaaaaac000, 4096) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaaac000 > write(1, "Wrote 4194304 bytes.\n", 21) = 21 > exit_group(0) = ? > > execve("/home/udo/Desktop/Testqueue/write_staticmem", > ["/home/udo/Desktop/Testqueue/writ"...], [/* 28 vars */]) = 0 > brk(0) = 0x701000 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaaab000 > uname({sys="Linux", node="nc7", ...}) = 0 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.cache", O_RDONLY) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=142108, ...}) = 0 > mmap(NULL, 142108, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aaaaaaac000 > close(3) = 0 > open("/lib64/libc.so.6", O_RDONLY) = 3 > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\333"..., 832) > = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=1689824, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaacf000 > mmap(0x32f7200000, 3469528, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x32f7200000 > mprotect(0x32f7347000, 2093056, PROT_NONE) = 0 > mmap(0x32f7546000, 20480, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x146000) = 0x32f7546000 > mmap(0x32f754b000, 16600, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x32f754b000 > close(3) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaad0000 > arch_prctl(ARCH_SET_FS, 0x2aaaaaad0230) = 0 > mprotect(0x32f7546000, 16384, PROT_READ) = 0 > mprotect(0x32f6419000, 4096, PROT_READ) = 0 > munmap(0x2aaaaaaac000, 142108) = 0 > brk(0) = 0x701000 > brk(0x722000) = 0x722000 > open("test.dat", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x2aaaaaad1000 > write(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 1048576) = 1048576 > close(3) = 0 > munmap(0x2aaaaaad1000, 1048576) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaad1000 > write(1, "Wrote 1048576 bytes.\n", 21) = 21 > exit_group(0) = ? > > execve("/home/udo/Desktop/Testqueue/write_staticmem", > ["/home/udo/Desktop/Testqueue/writ"...], [/* 28 vars */]) = 0 > brk(0) = 0xa01000 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaaab000 > uname({sys="Linux", node="nc7", ...}) = 0 > access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or > directory) > open("/etc/ld.so.cache", O_RDONLY) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=142108, ...}) = 0 > mmap(NULL, 142108, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aaaaaaac000 > close(3) = 0 > open("/lib64/libc.so.6", O_RDONLY) = 3 > read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\333"..., 832) > = 832 > fstat(3, {st_mode=S_IFREG|0755, st_size=1689824, ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaacf000 > mmap(0x32f7200000, 3469528, PROT_READ|PROT_EXEC, > MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x32f7200000 > mprotect(0x32f7347000, 2093056, PROT_NONE) = 0 > mmap(0x32f7546000, 20480, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x146000) = 0x32f7546000 > mmap(0x32f754b000, 16600, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x32f754b000 > close(3) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaad0000 > arch_prctl(ARCH_SET_FS, 0x2aaaaaad0230) = 0 > mprotect(0x32f7546000, 16384, PROT_READ) = 0 > mprotect(0x32f6419000, 4096, PROT_READ) = 0 > munmap(0x2aaaaaaac000, 142108) = 0 > brk(0) = 0xa01000 > brk(0xa22000) = 0xa22000 > open("test.dat", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 > fstat(3, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 > mmap(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, > 0) = 0x2aaaaaad1000 > write(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 4194304) = 4194304 > close(3) = 0 > munmap(0x2aaaaaad1000, 1048576) = 0 > fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 > mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = > 0x2aaaaaad1000 > write(1, "Wrote 4194304 bytes.\n", 21) = 21 > exit_group(0) = ? > > > -- It always takes longer than you expect, even when you take into account Hofstadter's Law. -- Hofstadter's Law