Re: 64-bit stat (or not) in 32-bit Fedora binaries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux