Bug 28767 - fuse doesn't process inode numbers properly on 32 bit platforms
: fuse doesn't process inode numbers properly on 32 bit platforms
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/kernel-image-ovz-el)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2013-03-30 20:30 by
Modified: 2013-04-01 01:25 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2013-03-30 20:30:24
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
explicitly.

The patch was merged into the mainline and some stable releases (v3.0.35,
v3.2.21, v3.4.3 and v2.6.32.60 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 2.6.32.60 kernel:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=commit;h=db8a784af98d392a51fa25bb651bf90a982044e3
------- Comment #1 From 2013-04-01 01:25:39 -------
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)