dm stats: fix possible counter corruption on 32-bit systems
authorMikulas Patocka <mpatocka@redhat.com>
Fri, 13 Sep 2013 21:42:24 +0000 (17:42 -0400)
committerMike Snitzer <snitzer@redhat.com>
Wed, 18 Sep 2013 18:41:06 +0000 (14:41 -0400)
commitbbf3f8cbdc139860a14c4fc2bb25432427045aaa
tree49c29342acc975d30d5d7399c9ba2ceacd718a01
parentcc9d3c382bc1674884c2e5e468d51230a9503dee
dm stats: fix possible counter corruption on 32-bit systems

There was a deliberate race condition in dm_stat_for_entry() to avoid the
overhead of disabling and enabling interrupts.  The race could result in
some events not being counted on 64-bit architectures.

However, on 32-bit architectures, operations on long long variables are
not atomic, so the race condition could cause the counter to jump by 2^32.
Such jumps could be disruptive, so we need to do proper locking on 32-bit
architectures.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: Alasdair G. Kergon <agk@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-stats.c