Bug 465151
Summary: | GFS: madvise system call causes assertion | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 5 | Reporter: | Abhijith Das <adas> | ||||
Component: | gfs-kmod | Assignee: | Chris Feist <cfeist> | ||||
Status: | CLOSED ERRATA | QA Contact: | Cluster QE <mspqa-list> | ||||
Severity: | urgent | Docs Contact: | |||||
Priority: | urgent | ||||||
Version: | 5.3 | CC: | bstevens, cevich, cfeist, edamato, nstraz, rpeterso, swhiteho, tao | ||||
Target Milestone: | rc | Keywords: | ZStream | ||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2009-01-20 21:18:04 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: | |||||||
Bug Depends On: | |||||||
Bug Blocks: | 465325, 465327 | ||||||
Attachments: |
|
Description
Abhijith Das
2008-10-01 20:09:35 UTC
Setting acks. Created attachment 319171 [details] RHEL5.3 version of the proposed patch This patch reverts the patch to bz 429343. Don't log any warnings/errors and simply return ENOSYS when you arrive at gfs_readpage without the inode glock held. (madvise syscall case) Pushing out a 5.2.z release, so need to address in 5.3 as well. Guess this should be a blocker instead of an exception due to 5.2.z activity. This has been committed and is being marked modified so we can get a zstream bug. *** Bug 464837 has been marked as a duplicate of this bug. *** I'm probably completely misunderstanding this, but won't reversing the entire patch regress the 429343 fix? Isn't this: - return AOP_TRUNCATED_PAGE; + return -ENOSYS; all that we need to do? Chris, Take a look at https://bugzilla.redhat.com/show_bug.cgi?id=429343#c5 The "easier solution" is the one we've done here. In the patch in bz 429343, doing - return AOP_TRUNCATED_PAGE; + return -ENOSYS; is not correct. We shouldn't attempt to grab the inode glock if it's not already held in gfs_readpage. Notice that we don't free (dequeue) the inode glock until gfs_readpage is called again. Returning AOP_TRUNCATED_PAGE when gfs_readpage is called through the madvise code, will not cause gfs_readpage to be called again and this inode glock will never be freed. Replacing AOP_TRUNCATED_PAGE with -ENOSYS will definitely not solve this and we'll end up with the same unfreed glock. Hope this clears things for you. Also, it's worth noting that the original bug 429343 was the assert in gfs_readpage. if (gfs_assert_warn(sdp, gfs_glock_is_locked_by_me(ip->i_gl))) { unlock_page(page); return -ENOSYS; } After the revert+change with the patch in comment #2, the only change we'll have is - if (gfs_assert_warn(sdp, gfs_glock_is_locked_by_me(ip->i_gl))) { + if (!gfs_glock_is_locked_by_me(ip->i_gl)) { An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2009-0132.html |