[dm-devel] [PATCH 1/2] dm-ioband: I/O bandwidth controller v1.10.0: Source code and patch
Ryo Tsuruta
ryov at valinux.co.jp
Wed Jan 21 13:03:56 UTC 2009
Hi Alasdair,
Thank you for reviewing and giving me suggestions.
> On Tue, Jan 20, 2009 at 02:11:14PM +0900, Ryo Tsuruta wrote:
> > This patch is the dm-ioband version 1.10.0 release.
>
> drivers/md/dm-ioband-ctl.c:194:2: warning: context problem in 'suspend_ioband_device': '_spin_unlock_irqrestore' expected different c
> ontext
> drivers/md/dm-ioband-ctl.c:194:2: context 'lock': wanted >= 1, got 0
> drivers/md/dm-ioband-ctl.c:608:3: warning: context problem in 'prevent_burst_bios': '_spin_unlock_irq' expected different context
> drivers/md/dm-ioband-ctl.c:608:3: context 'lock': wanted >= 1, got 0
>
>
> Last time we had something like that, it was straightforward to restructure the
> functions to avoid it - see if you can manage that here too.
I'm trying to suppress these warnings, but the latest sparse command
(2009-01-21) doesn't seem to interpret __acquires() and __releases()
macros properly.
I wrote the following sample code and tested with sparse-0.4.1 and
sparse-2009-01-21.
static void foo(struct ioband_device *dp, unsigned long flags)
{
spin_unlock_irqrestore(&dp->g_lock, flags);
}
The both sparse commands issued warnings as I expected.
sparse-0.4.1
CHECK /home/ryov/work/dm-ioband/dm-ioband/src/dm-ioband-ctl.c
/home/ryov/work/dm-ioband/dm-ioband/src/dm-ioband-ctl.c:171:13:
warning: context imbalance in 'foo' - unexpected unlock
sparse-2009-01-21
/home/ryov/work/dm-ioband/dm-ioband/src/dm-ioband-ctl.c:173:2:
warning: context problem in 'foo': '_spin_unlock_irqrestore'
expected different context
/home/ryov/work/dm-ioband/dm-ioband/src/dm-ioband-ctl.c:173:2:
context 'lock': wanted >= 1, got 0
Next, I added a __releases() macro and tested again.
static void foo(struct ioband_device *dp, unsigned long flags)
__releases(dp->g_lock)
{
spin_unlock_irqrestore(&dp->g_lock, flags);
}
Only sparse-2009-01-21 still issued the warning.
CHECK /home/ryov/work/dm-ioband/dm-ioband/src/dm-ioband-ctl.c
/home/ryov/work/dm-ioband/dm-ioband/src/dm-ioband-ctl.c:174:2:
warning: context problem in 'foo': '_spin_unlock_irqrestore'
expected different context
/home/ryov/work/dm-ioband/dm-ioband/src/dm-ioband-ctl.c:174:2:
context 'lock': wanted >= 1, got 0
Could you tell me which sparse version are you using?
Thanks,
Ryo Tsuruta
More information about the dm-devel
mailing list