On 4/3/13 3:49 AM, Florian Weimer wrote: > On 02/19/2013 12:15 AM, Eric Sandeen wrote: >> On 2/18/13 5:11 PM, John Reiser wrote: >>> It would be useful to have a "backward compatibility" LD_PRELOAD shared >>> library which intercepts the caller of stat32, and sets .st_ino to 0, >>> without generating EOVERFLOW, whenever the actual inode number exceeds >>> 32 bits. This would allow the *option* of continued operation >>> (postponing the work of portability enhancements) for the vast majority >>> of packages which do use stat() but do not inspect .st_ino. >> >> Yep, that would make some sense as a workaround. FWIW, here's a systemtap >> script which intercepts ext4 stat & bumps the inode nr past 2^32 >> (line numbers work on F18/kernel 3.7-8-ish at least) > > Do you have something similar for readdir? Do you know what the kernel does in this case? > > It would be quite annoying if the result was a truncated or incomplete directory listing. I haven't tested readdir but changing the stap script to do it probably wouldn't be too tough, I think just doing something similar to bump up fname->inode early in ext3/4's call_filldir() would do the trick at least for hashed dirs. Looking at filldir() in the kernel, it does look like you'd get EOVERFLOW: static int filldir(void * __buf, const char * name, int namlen, loff_t offset, u64 ino, unsigned int d_type) { ... unsigned long d_ino; ... d_ino = ino; if (sizeof(d_ino) < sizeof(ino) && d_ino != ino) { buf->error = -EOVERFLOW; return -EOVERFLOW; } (note again that although we're talking about ext3/4 here, they will never(tm) have > 32-bit inodes; they're just convenient to test on since everyone is running them today). -Eric -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel