Bug 668702
| Summary: | [RHEL 6]dbm_* calls should call the underlying gdbm_* calls using then GDBM_NOLOCK flag | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 6 | Reporter: | Sachin Prabhu <sprabhu> | ||||||
| Component: | gdbm | Assignee: | Marek Skalický <mskalick> | ||||||
| Status: | CLOSED ERRATA | QA Contact: | Robin Hack <rhack> | ||||||
| Severity: | high | Docs Contact: | Maxim Svistunov <msvistun> | ||||||
| Priority: | urgent | ||||||||
| Version: | 6.0 | CC: | databases-maint, hhorak, mskalick, msvistun, ovasik, pmuller, psklenar, rhack, rvokal, tsmetana | ||||||
| Target Milestone: | rc | Keywords: | Patch | ||||||
| Target Release: | --- | ||||||||
| Hardware: | Unspecified | ||||||||
| OS: | Linux | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | gdbm-1.8.0-39.el6 | Doc Type: | Bug Fix | ||||||
| Doc Text: |
Applications no longer access database files on a NFS share ineffectively
Prior to this update, some applications performed poorly when performing operations on database files hosted on a NFS share. This was caused by the frequent invalidations of cache on the NFS client. This update introduces a new environment variable `NDBM_LOCK`, which prevents cache invalidation. As a result, the relevant applications no longer perform poorly in the described scenario.
|
Story Points: | --- | ||||||
| Clone Of: | 663932 | Environment: | |||||||
| Last Closed: | 2016-05-10 23:59:18 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: | 663932, 1178101, 1208437 | ||||||||
| Bug Blocks: | 668689, 836160, 840699, 1172231, 1269927 | ||||||||
| Attachments: |
|
||||||||
|
Description
Sachin Prabhu
2011-01-11 10:29:49 UTC
This request was evaluated by Red Hat Product Management for inclusion in the current release of Red Hat Enterprise Linux. Because the affected component is not scheduled to be updated in the current release, Red Hat is unfortunately unable to address this request at this time. Red Hat invites you to ask your support representative to propose this request, if appropriate and relevant, in the next release of Red Hat Enterprise Linux. If you would like it considered as an exception in the current release, please ask your support representative. This request was evaluated by Red Hat Product Management for inclusion in the current release of Red Hat Enterprise Linux. Because the affected component is not scheduled to be updated in the current release, Red Hat is unfortunately unable to address this request at this time. Red Hat invites you to ask your support representative to propose this request, if appropriate and relevant, in the next release of Red Hat Enterprise Linux. If you would like it considered as an exception in the current release, please ask your support representative. This request was evaluated by Red Hat Product Management for inclusion in the current release of Red Hat Enterprise Linux. Because the affected component is not scheduled to be updated in the current release, Red Hat is unable to address this request at this time. Red Hat invites you to ask your support representative to propose this request, if appropriate, in the next release of Red Hat Enterprise Linux. This request was evaluated by Red Hat Product Management for inclusion in the current release of Red Hat Enterprise Linux. Because the affected component is not scheduled to be updated in the current release, Red Hat is unable to address this request at this time. Red Hat invites you to ask your support representative to propose this request, if appropriate, in the next release of Red Hat Enterprise Linux. *** Bug 1178101 has been marked as a duplicate of this bug. *** Created attachment 1106020 [details]
Easy reproducer
gdbm in RHEL 6 uses fcntl instead of flock (see #581524 ).
So the detection that the problem is fixed is slightly different from #663932.
Compile the "Easy reproducer" program with the following command
gcc -o dbm_test dbm_test.c -lgdbm
First test on old library or with NDBM_LOCK unset.
# echo $NDBM_LOCK
# strace ./dbm_test 2>&1|grep fcntl
fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
This shows that 2 fcntl calls were made. These are made by the gdbm library calls which were made by dbm calls.
Install the new package and set NDBM_LOCK
# export NDBM_LOCK=no
# strace ./dbm_test 2>&1|grep flock
We do not see any flock calls being made.
Sorry I haven't changed this testing procedure properly.
This is the correct one:
Compile the "Easy reproducer" program with the following command
gcc -o dbm_test dbm_test.c -lgdbm
First test on old library or with NDBM_LOCK unset.
# echo $NDBM_LOCK
# strace ./dbm_test 2>&1|grep fcntl
fcntl(3, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0
fcntl(3, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
This shows that 2 fcntl calls were made. These are made by the gdbm library calls which were made by dbm calls.
Install the new package and set NDBM_LOCK
# export NDBM_LOCK=no
# strace ./dbm_test 2>&1|grep fcntl
We do not see any fcntl calls being made.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-0863.html |