2008-10-24 18:31:23

by Harvey Harrison

[permalink] [raw]
Subject: [PATCH] gfs2: sparse annotation of gl->gl_spin

fs/gfs2/glock.c:308:5: warning: context problem in 'do_promote': '_spin_unlock' expected different context
fs/gfs2/glock.c:308:5: context '*gl+28': wanted >= 1, got 0
fs/gfs2/glock.c:529:2: warning: context problem in 'do_xmote': '_spin_unlock' expected different context
fs/gfs2/glock.c:529:2: context '*gl+28': wanted >= 1, got 0
fs/gfs2/glock.c:925:3: warning: context problem in 'add_to_queue': '_spin_unlock' expected different context
fs/gfs2/glock.c:925:3: context '*gl+28': wanted >= 1, got 0

Signed-off-by: Harvey Harrison <[email protected]>
---
fs/gfs2/glock.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
index c962283..27cb9cc 100644
--- a/fs/gfs2/glock.c
+++ b/fs/gfs2/glock.c
@@ -293,6 +293,8 @@ static void gfs2_holder_wake(struct gfs2_holder *gh)
*/

static int do_promote(struct gfs2_glock *gl)
+__releases(&gl->gl_spin)
+__acquires(&gl->gl_spin)
{
const struct gfs2_glock_operations *glops = gl->gl_ops;
struct gfs2_holder *gh, *tmp;
@@ -511,6 +513,8 @@ static unsigned int gfs2_lm_lock(struct gfs2_sbd *sdp, void *lock,
*/

static void do_xmote(struct gfs2_glock *gl, struct gfs2_holder *gh, unsigned int target)
+__releases(&gl->gl_spin)
+__acquires(&gl->gl_spin)
{
const struct gfs2_glock_operations *glops = gl->gl_ops;
struct gfs2_sbd *sdp = gl->gl_sbd;
@@ -576,6 +580,8 @@ static inline struct gfs2_holder *find_first_holder(const struct gfs2_glock *gl)
*/

static void run_queue(struct gfs2_glock *gl, const int nonblock)
+__releases(&gl->gl_spin)
+__acquires(&gl->gl_spin)
{
struct gfs2_holder *gh = NULL;

@@ -877,6 +883,8 @@ void gfs2_print_dbg(struct seq_file *seq, const char *fmt, ...)
*/

static inline void add_to_queue(struct gfs2_holder *gh)
+__releases(&gl->gl_spin)
+__acquires(&gl->gl_spin)
{
struct gfs2_glock *gl = gh->gh_gl;
struct gfs2_sbd *sdp = gl->gl_sbd;
--
1.6.0.3.723.g757e



2008-10-27 10:25:27

by Steven Whitehouse

[permalink] [raw]
Subject: Re: [PATCH] gfs2: sparse annotation of gl->gl_spin

Hi,

Now in the -nmw GFS2 git tree. Thanks,

Steve.

On Fri, 2008-10-24 at 11:31 -0700, Harvey Harrison wrote:
> fs/gfs2/glock.c:308:5: warning: context problem in 'do_promote': '_spin_unlock' expected different context
> fs/gfs2/glock.c:308:5: context '*gl+28': wanted >= 1, got 0
> fs/gfs2/glock.c:529:2: warning: context problem in 'do_xmote': '_spin_unlock' expected different context
> fs/gfs2/glock.c:529:2: context '*gl+28': wanted >= 1, got 0
> fs/gfs2/glock.c:925:3: warning: context problem in 'add_to_queue': '_spin_unlock' expected different context
> fs/gfs2/glock.c:925:3: context '*gl+28': wanted >= 1, got 0
>
> Signed-off-by: Harvey Harrison <[email protected]>
> ---
> fs/gfs2/glock.c | 8 ++++++++
> 1 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
> index c962283..27cb9cc 100644
> --- a/fs/gfs2/glock.c
> +++ b/fs/gfs2/glock.c
> @@ -293,6 +293,8 @@ static void gfs2_holder_wake(struct gfs2_holder *gh)
> */
>
> static int do_promote(struct gfs2_glock *gl)
> +__releases(&gl->gl_spin)
> +__acquires(&gl->gl_spin)
> {
> const struct gfs2_glock_operations *glops = gl->gl_ops;
> struct gfs2_holder *gh, *tmp;
> @@ -511,6 +513,8 @@ static unsigned int gfs2_lm_lock(struct gfs2_sbd *sdp, void *lock,
> */
>
> static void do_xmote(struct gfs2_glock *gl, struct gfs2_holder *gh, unsigned int target)
> +__releases(&gl->gl_spin)
> +__acquires(&gl->gl_spin)
> {
> const struct gfs2_glock_operations *glops = gl->gl_ops;
> struct gfs2_sbd *sdp = gl->gl_sbd;
> @@ -576,6 +580,8 @@ static inline struct gfs2_holder *find_first_holder(const struct gfs2_glock *gl)
> */
>
> static void run_queue(struct gfs2_glock *gl, const int nonblock)
> +__releases(&gl->gl_spin)
> +__acquires(&gl->gl_spin)
> {
> struct gfs2_holder *gh = NULL;
>
> @@ -877,6 +883,8 @@ void gfs2_print_dbg(struct seq_file *seq, const char *fmt, ...)
> */
>
> static inline void add_to_queue(struct gfs2_holder *gh)
> +__releases(&gl->gl_spin)
> +__acquires(&gl->gl_spin)
> {
> struct gfs2_glock *gl = gh->gh_gl;
> struct gfs2_sbd *sdp = gl->gl_sbd;