Re: Queue upcall locking (was: [dm-devel] [RFC][PATCH] fix dm_any_congested() to properly sync up with suspend code path)





On Mon, 10 Nov 2008, Alasdair G Kergon wrote:

On Mon, Nov 10, 2008 at 08:54:01AM -0500, Christoph Hellwig wrote:
On Mon, Nov 10, 2008 at 08:11:51AM -0500, Mikulas Patocka wrote:
For upstream Linux developers: you are holding a spinlock and calling
bdi*_congested functions that can take indefinite amount of time (there
are even users reporting having 50 disks in one logical volume or so). I
think it would be good to move these calls out of spinlocks.
Umm, they shouldn't block that long, as that completely defeats their
purpose.

Indeed - the blocking was a bug for which there's a patch, but that doesn't
deal with how the function should be operating in the first place.

To me it looks like the bug is more severe --- holding a reference to
table can happen in other upcalls too and in many other dm places.

I'm considering if we could call the table destructor just at one place
(that would wait until all references are gone), instead of calling the
destructor at each dm_table_put point (there are many of these points and
it's hard to check all of them for correctness).

- If one device is found to be congested, why bother checking the remaining
devices?

Yes, that could be improved. But it doesn't solve the O(n) problem.

- If the device is suspended, the response should be that it is
congested, I'd have thought.

Yes, but these congestion upcalls are used only for optimization and the
device is suspended for so small time, that it doesn't matter if we
optimize io acces in small moment or not.

Mikulas

Alasdair
--
agk@xxxxxxxxxx

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: Object recreating itself as a different class type ?
    ... which is a reference to the instance or ... Under the register convention, Self behaves as if it were declared before ... A value of False in the flag parameter of a constructor call indicates that ... A value of False in the flag parameter of a destructor call indicates that ...
    (alt.comp.lang.borland-delphi)
  • Re: Interview Questions
    ... Hand them a program with a bug in it and watch how they look for it. ... What is a pure virtual function, and why would you use it? ... What is the difference between a pointer and a reference? ...
    (microsoft.public.vc.mfc)
  • Re: iexplorer halts on exit when ActiveXObject has been used
    ... >>> The way to dispose of the object is to use its destructor, ... that is a constructor and destructor, ... further reference to the object or any of its properties is intended." ... > global/variable object will remove that reference from the system. ...
    (comp.lang.javascript)
  • Re: (another) infuriating IE bug
    ... I think this is a bug in IE, at least in ECMAScript terms it is a bug. ... undefined error - so f1 is not on the scope chain prior to its ... instructions to assign to a Reference with a null "Base" object by using ... French there is no word for "workaround"; ...
    (comp.lang.javascript)
  • Re: file conversion
    ... The new Mac Office Web Interface actually IS attempting to thread by ... Fixes to Thread by Reference got dropped from the next release, ... Hopefully this new release will fix the missed posts bug, ... So I would gently suggest that Microsoft has made a massive improvement ...
    (microsoft.public.mac.office)