ALT Linux Bugzilla – #28767
fuse doesn't process inode numbers properly on 32 bit platforms
Last modified: 2013-04-01 01:25:39
You need to
before you can comment on or make changes to this bug.
This is a copy of the bug from Red Hat Bugzilla
(https://bugzilla.redhat.com/show_bug.cgi?id=872629). There is no activity
there for a while - that's why I am posting it here.
RHEL OpenVZ kernel doesn't process fuse inode numbers properly:
Now it stores attr->ino at inode->i_ino, returns attr->ino at the first time
and then returns inode->i_ino if the attribute timeout isn't expired. That's
wrong on 32 bit platforms because attr->ino is 64 bit and inode->i_ino is 32
bit in this case.
It can cause problems e.g. with NFS server running on top of GluserFS that gets
different inode numbers time by time:
"NFS: server server error: fileid changed"
I have a patch "fuse: fix stat call on 32 bit platforms" that fixes this
problem by saving 64 bit ino in fuse_inode structure and returning it
everything when getattr comes. Also squash attr->ino into inode->i_ino
The patch was merged into the mainline and some stable releases (v3.0.35,
v3.2.21, v3.4.3 and v22.214.171.124 too) but I don't see it in the latest RHEL
OpenVZ kernel patch for 2.6.32 kernel.
The commit id in mainline: 45c72cd73c788dd18c8113d4a404d6b4a01decf1
The link to the commit merged into 126.96.36.199 kernel:
kernel-image-ovz-el-2.6.32-alt85 -> sisyphus:
* Sun Mar 31 2013 Led <led@altlinux> 2.6.32-alt85
- fuse: fix stat call on 32 bit platforms (ALT#28767)