Re: inodes

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

 



Emmanuel Dreyfus <manu@xxxxxxxxxx> wrote:

> I applied the patch on 3.2.3, updated and restarted my servers, but the
> inode is still not related to the gfid, and I still see mismatches
> between lookup and readdir.

Right, I make progresses. Logs in posix_fill_ino_from_gfid() shows that
the patch you sent me is either incomplete, or incorrect.

With this formula inode gets clobbered at mine when the fifth byte is
added.
        for (i = 15; i > (15 - 8); i--) {
                temp_ino += buf->ia_gfid[i] << j;
                j += 8;
        }

A simple cast fixes the problem:
        for (i = 15; i > (15 - 8); i--) {
                temp_ino += (uint64_t)(buf->ia_gfid[i]) << j;
                j += 8;
        }

The inode number seen on the client is still wrong, which suggests there
could be the same king of problem higher in the stack. I will
investigate further, but let me know if the problem already has a known
fix.

I assume it works at yours, therefore comparing gcc versions can be
interesting. Here is mine:

# gcc -v
Using built-in specs.
Target: i386--netbsdelf
Configured with: /usr/src/tools/gcc/../../gnu/dist/gcc4/configure
--enable-long-long --disable-multilib --enable-threads --disable-symvers
--build=x86_64-unknown-netbsd4.99.72 --host=i386--netbsdelf
--target=i386--netbsdelf --enable-__cxa_atexit
Thread model: posix
gcc version 4.1.3 20080704 prerelease (NetBSD nb2 20081120)


-- 
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz
manu@xxxxxxxxxx



[Index of Archives]     [Gluster Users]     [Ceph Users]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux