Bug 200471
Summary: | fcntl(F_SETLEASE) is broken in 2.6.17 | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Orion Poplawski <orion> | ||||
Component: | kernel | Assignee: | Kernel Maintainer List <kernel-maint> | ||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | Brian Brock <bbrock> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | medium | ||||||
Version: | 5 | CC: | wtogami | ||||
Target Milestone: | --- | Keywords: | Patch | ||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | 2.6.17-1.2187_FC5 | Doc Type: | Bug Fix | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2006-10-16 19:24:48 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
Orion Poplawski
2006-07-27 21:41:30 UTC
Created attachment 133200 [details]
Test program
From a reply on LKML from Chuck Ebbert: I added some debug statements to your code: => printf("before setlease: signal number = %d\n", fcntl(fd, F_GETSIG)); ret = fcntl(fd, F_SETLEASE, leasetype); if (ret == -1 && errno == EACCES) { set_capability(CAP_LEASE); ret = fcntl(fd, F_SETLEASE, leasetype); } => printf("after setlease: signal number = %d\n", fcntl(fd, F_GETSIG)); And I get: before setlease: signal number = 34 after setlease: signal number = 0 So the fcntl(F_SETLEASE) is resetting the signal number. I don't think it's supposed to do that. That seems to be caused by: | From: Trond Myklebust <Trond.Myklebust> | Date: Mon, 20 Mar 2006 18:44:05 +0000 (-0500) | Subject: VFS: Fix __posix_lock_file() copy of private lock area | X-Git-Tag: v2.6.17-rc1 | X-Git-Url: http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=47831 | | VFS: Fix __posix_lock_file() copy of private lock area | | The struct file_lock->fl_u area must be copied using the fl_copy_lock() | operation. In this change: | */ | void locks_copy_lock(struct file_lock *new, struct file_lock *fl) | { |+ locks_release_private(new); |+ | new->fl_owner = fl->fl_owner; | new->fl_pid = fl->fl_pid; | new->fl_file = fl->fl_file; Which ends up calling this: static void lease_release_private_callback(struct file_lock *fl) { if (!fl->fl_file) return; f_delown(fl->fl_file); => fl->fl_file->f_owner.signum = 0; } I'm not sure how to fix it, though (if that's really the problem, but I think it is.) Patch posted by Trond Myklebust: http://www.ussg.iu.edu/hypermail/linux/kernel/0608.1/0192.html A new kernel update has been released (Version: 2.6.18-1.2200.fc5) based upon a new upstream kernel release. Please retest against this new kernel, as a large number of patches go into each upstream release, possibly including changes that may address this problem. This bug has been placed in NEEDINFO state. Due to the large volume of inactive bugs in bugzilla, if this bug is still in this state in two weeks time, it will be closed. Should this bug still be relevant after this period, the reporter can reopen the bug at any time. Any other users on the Cc: list of this bug can request that the bug be reopened by adding a comment to the bug. In the last few updates, some users upgrading from FC4->FC5 have reported that installing a kernel update has left their systems unbootable. If you have been affected by this problem please check you only have one version of device-mapper & lvm2 installed. See bug 207474 for further details. If this bug is a problem preventing you from installing the release this version is filed against, please see bug 169613. If this bug has been fixed, but you are now experiencing a different problem, please file a separate bug for the new problem. Thank you. |