Hi, I tried to read from a regular ext3 file opened as O_DIRECT, but got the "Invalid argument" error. Running the same test program on a block device succeeded.
uname -a shows Linux ******* 2.4.27-2-686-smp #1 SMP Thu Jan 20 11:02:39 JST 2005 i686 GNU/Linux My test case is #include <sys/types.h> #include <sys/stat.h> #include <asm/fcntl.h> #include <stdio.h> #include <assert.h> #define BLK (4096U) main() { char buf[BLK * 2]; char *p = (char*)((((unsigned)buf) + (BLK-1)) & ~(BLK-1)); int fd, l; fprintf(stderr, "buf = %p, p = %p\n", buf, p); if((fd=open("sbd0", O_RDONLY|O_DIRECT)) < 0) { perror("open"); assert(0); } if((l=pread(fd, p, BLK, 0)) < 0) { perror("pread"); assert(0); } fprintf(stderr, "pread returns %d\n", l); close (fd); } Does anyone know what's going on? Thanks, -Junfeng - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/