lkml.org 
[lkml]   [2021]   [Oct]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC 2/3] mm/vmalloc: add support for __GFP_NOFAIL
    On Mon 25-10-21 16:30:23, Uladzislau Rezki wrote:
    > >
    > > I would really prefer if this was not the main point of arguing here.
    > > Unless you feel strongly about msleep I would go with schedule_timeout
    > > here because this is a more widely used interface in the mm code and
    > > also because I feel like that relying on the rounding behavior is just
    > > subtle. Here is what I have staged now.
    > >
    > I have a preference but do not have a strong opinion here. You can go
    > either way you want.
    >
    > >
    > > Are there any other concerns you see with this or other patches in the
    > > series?
    > >
    > it is better if you could send a new vX version because it is hard to
    > combine every "folded"

    Yeah, I plan to soon. I just wanted to sort out most things before
    spaming with a new version.

    > into one solid commit. One comment below:
    >
    > > ---
    > > commit c1a7e40e6b56fed5b9e716de7055b77ea29d89d0
    > > Author: Michal Hocko <mhocko@suse.com>
    > > Date: Wed Oct 20 10:12:45 2021 +0200
    > >
    > > fold me "mm/vmalloc: add support for __GFP_NOFAIL"
    > >
    > > Add a short sleep before retrying. 1 jiffy is a completely random
    > > timeout. Ideally the retry would wait for an explicit event - e.g.
    > > a change to the vmalloc space change if the failure was caused by
    > > the space fragmentation or depletion. But there are multiple different
    > > reasons to retry and this could become much more complex. Keep the retry
    > > simple for now and just sleep to prevent from hogging CPUs.
    > >
    > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c
    > > index 0fb5413d9239..a866db0c9c31 100644
    > > --- a/mm/vmalloc.c
    > > +++ b/mm/vmalloc.c
    > > @@ -2944,6 +2944,7 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
    > > do {
    > > ret = vmap_pages_range(addr, addr + size, prot, area->pages,
    > > page_shift);
    > > + schedule_timeout_uninterruptible(1);
    > >
    > We do not want to schedule_timeout_uninterruptible(1); every time.
    > Only when an error is detected.

    Because I was obviously in a brainless mode when doing that one. Thanks
    for pointing this out!
    --
    Michal Hocko
    SUSE Labs

    \
     
     \ /
      Last update: 2021-10-25 16:56    [W:3.264 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site