Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 213371 Details for
Bug 221152
GFS2: Clean up of glock code
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
First of five glock patches
gl-clean-1.diff (text/plain), 3.52 KB, created by
Steve Whitehouse
on 2007-10-02 13:37:06 UTC
(
hide
)
Description:
First of five glock patches
Filename:
MIME Type:
Creator:
Steve Whitehouse
Created:
2007-10-02 13:37:06 UTC
Size:
3.52 KB
patch
obsolete
>From swhiteho@redhat.com Mon Jul 30 05:54:15 2007 >Return-Path: <swhiteho@redhat.com> >Received: from pobox.fab.redhat.com ([unix socket]) by pobox.fab.redhat.com > (Cyrus v2.2.12-Invoca-RPM-2.2.12-8.1.RHEL4) with LMTPA; Mon, 30 Jul 2007 > 05:54:15 -0400 >X-Sieve: CMU Sieve 2.2 >Received: from localhost.localdomain (vpn-14-116.rdu.redhat.com > [10.11.14.116]) by pobox.fab.redhat.com (8.13.1/8.13.1) with ESMTP id > l6U9sCFp014089; Mon, 30 Jul 2007 05:54:14 -0400 >From: Steven Whitehouse <swhiteho@redhat.com> >To: cluster-devel@redhat.com >Cc: Steven Whitehouse <swhiteho@redhat.com> >Subject: [PATCH] [GFS2] Clean up arguments to rq_mutex/rq_promote >Date: Mon, 30 Jul 2007 10:32:14 +0100 >Message-Id: <1185787946183-git-send-email-swhiteho@redhat.com> >X-Mailer: git-send-email 1.5.1.2 >In-Reply-To: <11857879381186-git-send-email-swhiteho@redhat.com> >References: <11857879381186-git-send-email-swhiteho@redhat.com> >X-Evolution-Source: imap://swhiteho@pobox.fab.redhat.com/ >Content-Transfer-Encoding: 8bit >Mime-Version: 1.0 > >By making the arguments to rq_mutex and rq_promote into glocks >and moving the asserts to those functions, run_queue becomes >much simpler. Also rq_mutex always returned 1, so I've changed it >to return void and it always breaks out of the loop. > >Signed-off-by: Steven Whitehouse <swhiteho@redhat.com> > >diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c >index e4bc8ae..65d6eba 100644 >--- a/fs/gfs2/glock.c >+++ b/fs/gfs2/glock.c >@@ -455,18 +455,18 @@ static void wait_on_demote(struct gfs2_glock *gl) > * Returns: 1 if the queue is blocked > */ > >-static int rq_mutex(struct gfs2_holder *gh) >+static void rq_mutex(struct gfs2_glock *gl) > { >- struct gfs2_glock *gl = gh->gh_gl; >+ struct gfs2_holder *gh = list_entry(gl->gl_waiters1.next, >+ struct gfs2_holder, gh_list); > >+ BUG_ON(test_bit(HIF_MUTEX, &gh->gh_iflags) == 0); > list_del_init(&gh->gh_list); > /* gh->gh_error never examined. */ > set_bit(GLF_LOCK, &gl->gl_flags); > clear_bit(HIF_WAIT, &gh->gh_iflags); > smp_mb(); > wake_up_bit(&gh->gh_iflags, HIF_WAIT); >- >- return 1; > } > > /** >@@ -478,11 +478,13 @@ static int rq_mutex(struct gfs2_holder *gh) > * Returns: 1 if the queue is blocked > */ > >-static int rq_promote(struct gfs2_holder *gh) >+static int rq_promote(struct gfs2_glock *gl) > { >- struct gfs2_glock *gl = gh->gh_gl; >+ struct gfs2_holder *gh = list_entry(gl->gl_waiters3.next, >+ struct gfs2_holder, gh_list); > struct gfs2_sbd *sdp = gl->gl_sbd; > >+ BUG_ON(test_bit(HIF_PROMOTE, &gh->gh_iflags) == 0); > if (!relaxed_state_ok(gl->gl_state, gh->gh_state, gh->gh_flags)) { > if (list_empty(&gl->gl_holders)) { > gl->gl_req_gh = gh; >@@ -562,35 +564,21 @@ static int rq_demote(struct gfs2_glock *gl) > */ > static void run_queue(struct gfs2_glock *gl) > { >- struct gfs2_holder *gh; >- int blocked = 1; >+ int blocked; > > for (;;) { >+ blocked = 1; > if (test_bit(GLF_LOCK, &gl->gl_flags)) > break; > > if (!list_empty(&gl->gl_waiters1)) { >- gh = list_entry(gl->gl_waiters1.next, >- struct gfs2_holder, gh_list); >- >- if (test_bit(HIF_MUTEX, &gh->gh_iflags)) >- blocked = rq_mutex(gh); >- else >- gfs2_assert_warn(gl->gl_sbd, 0); >- >+ rq_mutex(gl); >+ break; > } else if (test_bit(GLF_DEMOTE, &gl->gl_flags)) { > blocked = rq_demote(gl); > } else if (!list_empty(&gl->gl_waiters3)) { >- gh = list_entry(gl->gl_waiters3.next, >- struct gfs2_holder, gh_list); >- >- if (test_bit(HIF_PROMOTE, &gh->gh_iflags)) >- blocked = rq_promote(gh); >- else >- gfs2_assert_warn(gl->gl_sbd, 0); >- >- } else >- break; >+ blocked = rq_promote(gl); >+ } > > if (blocked) > break; >-- >1.5.1.2 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 221152
: 213371 |
213381
|
213391
|
213401
|
213411
|
241931