* Redundant uses of might_sleep_if()
@ 2004-01-30 19:40 ioana alexandrescu
2004-01-30 20:18 ` Andrew Morton
0 siblings, 1 reply; 2+ messages in thread
From: ioana alexandrescu @ 2004-01-30 19:40 UTC (permalink / raw)
To: linux-kernel
In kernel 2.6.1 it appears that the only necessary
uses of might_sleep_if()are in __alloc_pages(), and
perhaps, in cache_alloc_debugcheck_before() (see
notes).
Other uses of might_sleep_if() appear to be redundant:
Pte_chain_alloc()-->might_sleep_if(), but also
Pte_chain_alloc-->kmem_cache_alloc
-->__cache_alloc -->__cache_alloc()
-->cache_alloc_debugcheck_before()
-->might_sleep_if()
skb_share_check()-->might_sleep_if(), but also
skb_share_check()-->skb_clone()
-->kmem_cache_alloc()[as above]
skb_unshare()-->might_sleep_if(), but also
skb_unshare()-->skb_copy()
-->kmem_cache_alloc()[as above]
Other paths through skb_unshare, same result.
QUERY: Should these redundant uses be patched out?
Note 1: all present uses of might_sleep_if(cond)
resolve to the equivalent of might_sleep_if(gfp_mask
& __GFP_WAIT) - which suggests an encapsulating
macro:
#define might_sleep_if_wait(flags) might_sleep_if\
(flags & __GFP_WAIT)
Note 2: preliminary analysis suggests that even
cache_alloc_debugcheck_before()-->might_sleep_if()
is, strictly speaking, unnecessary since the same
check in performed in __alloc_pages(). Of course the
duplicated check doesn't cost much.
Carl Spalletta
--
See New Jersey and die!
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free web site building tool. Try it!
http://webhosting.yahoo.com/ps/sb/
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Redundant uses of might_sleep_if()
2004-01-30 19:40 Redundant uses of might_sleep_if() ioana alexandrescu
@ 2004-01-30 20:18 ` Andrew Morton
0 siblings, 0 replies; 2+ messages in thread
From: Andrew Morton @ 2004-01-30 20:18 UTC (permalink / raw)
To: ioana alexandrescu; +Cc: linux-kernel
ioana alexandrescu <ioanamitu@yahoo.com> wrote:
>
> In kernel 2.6.1 it appears that the only necessary
> uses of might_sleep_if()are in __alloc_pages(), and
> perhaps, in cache_alloc_debugcheck_before() (see
> notes).
>
> Other uses of might_sleep_if() appear to be redundant:
>
> Pte_chain_alloc()-->might_sleep_if(), but also
> Pte_chain_alloc-->kmem_cache_alloc
> -->__cache_alloc -->__cache_alloc()
> -->cache_alloc_debugcheck_before()
> -->might_sleep_if()
>
> skb_share_check()-->might_sleep_if(), but also
> skb_share_check()-->skb_clone()
> -->kmem_cache_alloc()[as above]
>
> skb_unshare()-->might_sleep_if(), but also
> skb_unshare()-->skb_copy()
> -->kmem_cache_alloc()[as above]
>
> Other paths through skb_unshare, same result.
>
>
> QUERY: Should these redundant uses be patched out?
Nope.
Take the case of pte_chain_alloc(). Most of the time, it won't call
kmem_cache_alloc() at all. But sometimes it will. But we want to run the
might_sleep() check *every* time someone calls pte_chain_alloc(), not just
some of the times.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-01-30 20:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-01-30 19:40 Redundant uses of might_sleep_if() ioana alexandrescu
2004-01-30 20:18 ` Andrew Morton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®