There is another valid test when we take the lock, the previous test can be dropped. Signed-off-by: Mikulas Patocka --- drivers/md/dm-snap.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) Index: linux-2.6.26-devel/drivers/md/dm-snap.c =================================================================== --- linux-2.6.26-devel.orig/drivers/md/dm-snap.c 2008-07-14 20:05:20.000000000 +0200 +++ linux-2.6.26-devel/drivers/md/dm-snap.c 2008-07-14 20:05:47.000000000 +0200 @@ -964,15 +964,11 @@ static int snapshot_map(struct dm_target chunk = sector_to_chunk(s, bio->bi_sector); - /* Full snapshots are not usable */ - /* To get here the table must be live so s->active is always set. */ - if (!s->valid) - return -EIO; - /* FIXME: should only take write lock if we need * to copy an exception */ down_write(&s->lock); + /* Full snapshots are not usable */ if (!s->valid) { r = -EIO; goto out_unlock;