lkml.org 
[lkml]   [2016]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRE: [PATCH v2 RESEND 2/4] Drivers: hv: balloon: account for gaps in hot add regions
Date
> >>  static unsigned long handle_pg_range(unsigned long pg_start, @@ -
> 834,13
> >> +881,19 @@ static unsigned long process_hot_add(unsigned long
> pg_start,
> >> unsigned long rg_size)
> >> {
> >> struct hv_hotadd_state *ha_region = NULL;
> >> + int covered;
> >>
> >> if (pfn_cnt == 0)
> >> return 0;
> >>
> >> - if (!dm_device.host_specified_ha_region)
> >> - if (pfn_covered(pg_start, pfn_cnt))
> >> + if (!dm_device.host_specified_ha_region) {
> >> + covered = pfn_covered(pg_start, pfn_cnt);
> >> + if (covered < 0)
> >> + return 0;
> >
> > If the hot-add pages aren't covered by any region, then shouldn't it fall
> through instead of returning?
> > That way the new ha_region can be added to the list and we hot-add the
> > pages accordingly.
>
> I was under an impression this is impossible:
> hot_add_req()/process_hot_add() will create a new region in this
> case. 'covered < 0' was added to handle one particular error: failure to
> allocate memory to record gap (struct hv_hotadd_gap) and I don't have a
> better idea how to handle this: if we can't remember the gap we'll crash
> later on onlining...
>

You are correct. I misread your patch thinking "covered < 0" means the page range is not covered; when it is actually handling an error case.

> --
> Vitaly

\
 
 \ /
  Last update: 2016-09-17 09:57    [W:0.177 / U:0.624 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site