Bug 28767 - fuse doesn't process inode numbers properly on 32 bit platforms
Summary: fuse doesn't process inode numbers properly on 32 bit platforms
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: kernel-image-ovz-el (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Gleb F-Malinovskiy
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-03-30 20:30 MSK by Pavel Shilovsky
Modified: 2013-04-01 01:25 MSK (History)
14 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pavel Shilovsky 2013-03-30 20:30:24 MSK
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 Repository Robot 2013-04-01 01:25:39 MSK
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)