Re: [PATCH] dm.c - device-mapper I/O path fixes

Denis Vlasenko (vda@port.imtp.ilyichevsk.odessa.ua)
Wed, 11 Dec 2002 16:19:07 -0200


On 11 December 2002 10:19, Joe Thornber wrote:
> dec_pending(): only bother spin locking if io->error is going to be
> updated. [Kevin Corry]
>
> --- diff/drivers/md/dm.c 2002-12-11 12:00:29.000000000 +0000
> +++ source/drivers/md/dm.c 2002-12-11 12:00:34.000000000 +0000
> @@ -238,10 +238,11 @@
> static spinlock_t _uptodate_lock = SPIN_LOCK_UNLOCKED;
> unsigned long flags;
>
> - spin_lock_irqsave(&_uptodate_lock, flags);
> - if (error)
> + if (error) {
> + spin_lock_irqsave(&_uptodate_lock, flags);
> io->error = error;
> - spin_unlock_irqrestore(&_uptodate_lock, flags);
> + spin_unlock_irqrestore(&_uptodate_lock, flags);
> + }
>
> if (atomic_dec_and_test(&io->io_count)) {
> if (atomic_dec_and_test(&io->md->pending))

This seems pointless, end result:

spin_lock_irqsave(&_uptodate_lock, flags);
io->error = error;
spin_unlock_irqrestore(&_uptodate_lock, flags);

BTW, the function we are looking at:

static inline void dec_pending(struct dm_io *io, int error)
^^^^^^
is too big for inlining.

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