Hello, I made some further investigation about the slow disk access under gnumach/Hurd. I modified device.c in libstore, adding a printf line in dev_read(), that I suppose is the place where disk access really happens:
static error_t dev_read (struct store *store, store_offset_t addr, size_t index, mach_msg_type_number_t amount, void **buf, mach_msg_type_number_t *len) { error_t ret=0; device_stat.read++; ret = dev_error (device_read (store->port, 0, addr, amount, (io_buf_ptr_t *)buf, len)); printf("dev_read: index=%d amount=%d len=%d\n", addr, amount, *len); return ret; } I started the new ext2fs translator on a partition, and I find the result weird: 1) amount is always zero. Amount is supposed to be the amount of data to read, passed to the system call device_read. What does it mean a request of 0 byte to read? 2) len is the number of byte readed by gnumach. This value often is 4096, but sometimes 1024 or 2048. Why does it change? I suspect that the amount of data to read is passed to device_read in a way that I don't understand. I also found that data is preserved in memory (cached), but is discarded in randomly. For example if I repeat the following command at interval of few second: cat hurd-????_orig.tar.gz >/dev/null, the I see that the first time the file is readed from disk, then for 3 or 4 times there is not readed from disk, and then is readed (probably completly) from disk. Of course I'm pleanty of free RAM. Bigger file (16Mb) is always reread from disk. I hope that some gnumach/hurd expert can explain this strange behaviour. TIA -- Saluti / Regards Diego Roversi | diegor at maganet.net | diegor at tiscalinet.it _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd