Re: Fix unlock_buffer() to work the same way as bit_unlock()

From: Zoltan Menyhart
Date: Tue Mar 28 2006 - 16:39:27 EST


Chen, Kenneth W wrote:
Nick Piggin wrote on Tuesday, March 28, 2006 12:11 AM

Also, I think there is still the issue of ia64 not having the
correct memory consistency semantics. To start with, all the bitops
and atomic ops which both modify their operand and return a value
should be full memory barriers before and after the operation,
according to Documentation/atomic_ops.txt.

I suppose the usage of atomic ops is abused, it is used in both lock
and unlock path. And it naturally suck because it now requires full
memory barrier. A better way is to define 3 variants: one for lock
path, one for unlock path, and one with full memory fence.

I agree. As I wrote a few days ago:

Why not to use separate bit operations for different purposes?

- e.g. "test_and_set_bit_N_acquire()" for lock acquisition
- "test_and_set_bit()", "clear_bit()" as they are today
- "release_N_clear_bit()"...

Thanks,

Zoltan

-
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/