OpenVZ Forum


Home » Mailing lists » Devel » [PATCH] SUNRPC: skip dead but not buried clients on PipeFS events
[PATCH] SUNRPC: skip dead but not buried clients on PipeFS events [message #45937] Thu, 19 April 2012 10:57 Go to next message
Stanislav Kinsbursky is currently offline  Stanislav Kinsbursky
Messages: 683
Registered: October 2011
Senior Member
From: *parallels.com
These clients can't be safely dereferenced if their counter in 0.

Signee-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>

---
net/sunrpc/clnt.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
index 6797246..591994d 100644
--- a/net/sunrpc/clnt.c
+++ b/net/sunrpc/clnt.c
@@ -218,7 +218,8 @@ static struct rpc_clnt *rpc_get_client_for_event(struct net *net, int event)
if (((event == RPC_PIPEFS_MOUNT) && clnt->cl_dentry) ||
((event == RPC_PIPEFS_UMOUNT) && !clnt->cl_dentry))
continue;
- atomic_inc(&clnt->cl_count);
+ if (atomic_inc_return(&clnt->cl_count) == 1)
+ continue;
spin_unlock(&sn->rpc_client_lock);
return clnt;
}
Re: [PATCH] SUNRPC: skip dead but not buried clients on PipeFS events [message #45938 is a reply to message #45937] Thu, 19 April 2012 11:36 Go to previous messageGo to next message
Stanislav Kinsbursky is currently offline  Stanislav Kinsbursky
Messages: 683
Registered: October 2011
Senior Member
From: *parallels.com
Sorry, but ignore this patch too.
It can't be that simple because of these cl_count tricks in rpc_release_client...

19.04.2012 14:57, Stanislav Kinsbursky пишет:
> These clients can't be safely dereferenced if their counter in 0.
>
> Signee-off-by: Stanislav Kinsbursky<skinsbursky@parallels.com>
>
> Signed-off-by: Stanislav Kinsbursky<skinsbursky@parallels.com>
>
> ---
> net/sunrpc/clnt.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> index 6797246..591994d 100644
> --- a/net/sunrpc/clnt.c
> +++ b/net/sunrpc/clnt.c
> @@ -218,7 +218,8 @@ static struct rpc_clnt *rpc_get_client_for_event(struct net *net, int event)
> if (((event == RPC_PIPEFS_MOUNT)&& clnt->cl_dentry) ||
> ((event == RPC_PIPEFS_UMOUNT)&& !clnt->cl_dentry))
> continue;
> - atomic_inc(&clnt->cl_count);
> + if (atomic_inc_return(&clnt->cl_count) == 1)
> + continue;
> spin_unlock(&sn->rpc_client_lock);
> return clnt;
> }
>


--
Best regards,
Stanislav Kinsbursky
Re: [PATCH] SUNRPC: skip dead but not buried clients on PipeFS events [message #45942 is a reply to message #45938] Thu, 19 April 2012 21:40 Go to previous messageGo to next message
bfields is currently offline  bfields
Messages: 107
Registered: September 2007
Senior Member
From: *parallels.com
On Thu, Apr 19, 2012 at 03:36:57PM +0400, Stanislav Kinsbursky wrote:
> Sorry, but ignore this patch too.
> It can't be that simple because of these cl_count tricks in rpc_release_client...

OK. Very minor whine:

>
> 19.04.2012 14:57, Stanislav Kinsbursky пишет:
> >These clients can't be safely dereferenced if their counter in 0.
> >
> >Signee-off-by: Stanislav Kinsbursky<skinsbursky@parallels.com>
> >
> >Signed-off-by: Stanislav Kinsbursky<skinsbursky@parallels.com>

I don't mind fixing up trivial slips every now and then, but that double
signed-off-by seems to happen on a lot of your posts; could you figure
out what's up with your scripts?

--b.

> >
> >---
> > net/sunrpc/clnt.c | 3 ++-
> > 1 files changed, 2 insertions(+), 1 deletions(-)
> >
> >diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> >index 6797246..591994d 100644
> >--- a/net/sunrpc/clnt.c
> >+++ b/net/sunrpc/clnt.c
> >@@ -218,7 +218,8 @@ static struct rpc_clnt *rpc_get_client_for_event(struct net *net, int event)
> > if (((event == RPC_PIPEFS_MOUNT)&& clnt->cl_dentry) ||
> > ((event == RPC_PIPEFS_UMOUNT)&& !clnt->cl_dentry))
> > continue;
> >- atomic_inc(&clnt->cl_count);
> >+ if (atomic_inc_return(&clnt->cl_count) == 1)
> >+ continue;
> > spin_unlock(&sn->rpc_client_lock);
> > return clnt;
> > }
> >
>
>
> --
> Best regards,
> Stanislav Kinsbursky
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] SUNRPC: skip dead but not buried clients on PipeFS events [message #45960 is a reply to message #45942] Fri, 20 April 2012 06:05 Go to previous message
Stanislav Kinsbursky is currently offline  Stanislav Kinsbursky
Messages: 683
Registered: October 2011
Senior Member
From: *parallels.com
20.04.2012 01:40, bfields@fieldses.org написал:
> On Thu, Apr 19, 2012 at 03:36:57PM +0400, Stanislav Kinsbursky wrote:
>> Sorry, but ignore this patch too.
>> It can't be that simple because of these cl_count tricks in rpc_release_client...
> OK. Very minor whine:
>
>> 19.04.2012 14:57, Stanislav Kinsbursky пишет:
>>> These clients can't be safely dereferenced if their counter in 0.
>>>
>>> Signee-off-by: Stanislav Kinsbursky<skinsbursky@parallels.com>
>>>
>>> Signed-off-by: Stanislav Kinsbursky<skinsbursky@parallels.com>
> I don't mind fixing up trivial slips every now and then, but that double
> signed-off-by seems to happen on a lot of your posts; could you figure
> out what's up with your scripts?

Yes, sure. Sorry.
I've noticed this problem just yesterday.
Previous Topic: [PATCH] LockD: call per-net shutdown on every global shutdown call
Next Topic: [PATCH 1/3] SUNRPC: skip clients with program without PipeFS entries
Goto Forum:
  


Current Time: Sun Jul 05 00:13:33 GMT 2020