From: Steven Whitehouse <swhiteho@redhat.com>
To: Pavel Emelyanov <xemul@openvz.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
devel@openvz.org, Oleg Nesterov <oleg@tv-sign.ru>
Subject: Re: [PATCH 6/12] gfs2: make gfs2_glock.gl_owner_pid be a struct pid *
Date: Tue, 29 Jan 2008 14:19:45 +0000 [thread overview]
Message-ID: <1201616386.22038.337.camel@quoit> (raw)
In-Reply-To: <479F3063.2050006@openvz.org>
Hi,
Would you like me to take these two GFS2 patches into my git tree for
the next merge window, or are you intending that these should go to
Linus in this merge window? Either way I'm happy to add my:
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Steve.
On Tue, 2008-01-29 at 16:55 +0300, Pavel Emelyanov wrote:
> The gl_owner_pid field is used to get the lock owning
> task by its pid, so make it in a proper manner, i.e.
> by using the struct pid pointer and pid_task() function.
>
> The pid_task() becomes exported for the gfs2 module.
>
> Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
>
> ---
> fs/gfs2/glock.c | 19 ++++++++++++-------
> fs/gfs2/incore.h | 2 +-
> 2 files changed, 13 insertions(+), 8 deletions(-)
>
> diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c
> index 80e09c5..5fe585f 100644
> --- a/fs/gfs2/glock.c
> +++ b/fs/gfs2/glock.c
> @@ -334,7 +334,7 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number,
> gl->gl_state = LM_ST_UNLOCKED;
> gl->gl_demote_state = LM_ST_EXCLUSIVE;
> gl->gl_hash = hash;
> - gl->gl_owner_pid = 0;
> + gl->gl_owner_pid = NULL;
> gl->gl_ip = 0;
> gl->gl_ops = glops;
> gl->gl_req_gh = NULL;
> @@ -631,7 +631,7 @@ static void gfs2_glmutex_lock(struct gfs2_glock *gl)
> wait_on_holder(&gh);
> gfs2_holder_uninit(&gh);
> } else {
> - gl->gl_owner_pid = current->pid;
> + gl->gl_owner_pid = get_pid(task_pid(current));
> gl->gl_ip = (unsigned long)__builtin_return_address(0);
> spin_unlock(&gl->gl_spin);
> }
> @@ -652,7 +652,7 @@ static int gfs2_glmutex_trylock(struct gfs2_glock *gl)
> if (test_and_set_bit(GLF_LOCK, &gl->gl_flags)) {
> acquired = 0;
> } else {
> - gl->gl_owner_pid = current->pid;
> + gl->gl_owner_pid = get_pid(task_pid(current));
> gl->gl_ip = (unsigned long)__builtin_return_address(0);
> }
> spin_unlock(&gl->gl_spin);
> @@ -668,12 +668,17 @@ static int gfs2_glmutex_trylock(struct gfs2_glock *gl)
>
> static void gfs2_glmutex_unlock(struct gfs2_glock *gl)
> {
> + struct pid *pid;
> +
> spin_lock(&gl->gl_spin);
> clear_bit(GLF_LOCK, &gl->gl_flags);
> - gl->gl_owner_pid = 0;
> + pid = gl->gl_owner_pid;
> + gl->gl_owner_pid = NULL;
> gl->gl_ip = 0;
> run_queue(gl);
> spin_unlock(&gl->gl_spin);
> +
> + put_pid(pid);
> }
>
> /**
> @@ -1877,13 +1882,13 @@ static int dump_glock(struct glock_iter *gi, struct gfs2_glock *gl)
> print_dbg(gi, " gl_ref = %d\n", atomic_read(&gl->gl_ref));
> print_dbg(gi, " gl_state = %u\n", gl->gl_state);
> if (gl->gl_owner_pid) {
> - gl_owner = find_task_by_pid(gl->gl_owner_pid);
> + gl_owner = pid_task(gl->gl_owner_pid, PIDTYPE_PID);
> if (gl_owner)
> print_dbg(gi, " gl_owner = pid %d (%s)\n",
> - gl->gl_owner_pid, gl_owner->comm);
> + pid_nr(gl->gl_owner_pid), gl_owner->comm);
> else
> print_dbg(gi, " gl_owner = %d (ended)\n",
> - gl->gl_owner_pid);
> + pid_nr(gl->gl_owner_pid));
> } else
> print_dbg(gi, " gl_owner = -1\n");
> print_dbg(gi, " gl_ip = %lu\n", gl->gl_ip);
> diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
> index 1339996..8ad1c3f 100644
> --- a/fs/gfs2/incore.h
> +++ b/fs/gfs2/incore.h
> @@ -182,7 +182,7 @@ struct gfs2_glock {
> unsigned int gl_hash;
> unsigned int gl_demote_state; /* state requested by remote node */
> unsigned long gl_demote_time; /* time of first demote request */
> - pid_t gl_owner_pid;
> + struct pid *gl_owner_pid;
> unsigned long gl_ip;
> struct list_head gl_holders;
> struct list_head gl_waiters1; /* HIF_MUTEX */
> diff --git a/kernel/pid.c b/kernel/pid.c
> index e4e5fc8..4776915 100644
> --- a/kernel/pid.c
> +++ b/kernel/pid.c
> @@ -367,6 +367,7 @@ struct task_struct *pid_task(struct pid *pid, enum pid_type type)
> }
> return result;
> }
> +EXPORT_SYMBOL(pid_task);
>
> /*
> * Must be called under rcu_read_lock() or with tasklist_lock read-held.
next prev parent reply other threads:[~2008-01-29 14:25 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-29 13:38 [PATCH 0/12] Schedule find_task_by_pid() for removal Pavel Emelyanov
2008-01-29 13:41 ` [PATCH 1/12] Use find_task_by_vpid in posix timers Pavel Emelyanov
2008-01-29 13:43 ` [PATCH 2/12] Use find_task_by_vpid in autid code Pavel Emelyanov
2008-01-29 13:46 ` [PATCH 3/12] Use find_task_by_vpid in taskstats Pavel Emelyanov
2008-01-29 13:49 ` [PATCH 4/12] Don't operate with pid_t in rtmutex tester Pavel Emelyanov
2008-01-29 13:52 ` [PATCH 5/12] Handle pid namespaces in cgroups code Pavel Emelyanov
2008-01-29 18:08 ` Paul Menage
2008-01-29 13:55 ` [PATCH 6/12] gfs2: make gfs2_glock.gl_owner_pid be a struct pid * Pavel Emelyanov
2008-01-29 14:19 ` Steven Whitehouse [this message]
2008-01-29 14:33 ` Pavel Emelyanov
2008-01-29 13:57 ` [PATCH 7/12] gfs2: make gfs2_holder.gh_owner_pid " Pavel Emelyanov
2008-01-29 13:59 ` [PATCH 8/12] frv: use find_task_by_vpid in cxn_pin_by_pid Pavel Emelyanov
2008-01-29 14:02 ` [PATCH 9/12] ia64: make pfm_get_task work with virtual pids Pavel Emelyanov
2008-01-29 14:04 ` [PATCH 10/12] ia64: fix ptrace inside a namespace Pavel Emelyanov
2008-01-29 14:06 ` [PATCH 11/12] mips: use find_task_by_vpid in system calls Pavel Emelyanov
2008-01-29 14:09 ` [PATCH 12/12] Deprecate the find_task_by_pid Pavel Emelyanov
2008-02-01 22:27 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1201616386.22038.337.camel@quoit \
--to=swhiteho@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=devel@openvz.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@tv-sign.ru \
--cc=xemul@openvz.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.