diff -urpN --exclude-from=/home/davej/.exclude bk-linus/fs/block_dev.c linux-2.5/fs/block_dev.c --- bk-linus/fs/block_dev.c 2002-11-21 02:19:41.000000000 +0000 +++ linux-2.5/fs/block_dev.c 2002-11-21 18:01:54.000000000 +0000 @@ -703,14 +703,15 @@ int blkdev_put(struct block_device *bdev down(&bdev->bd_sem); lock_kernel(); - switch (kind) { - case BDEV_FILE: - case BDEV_FS: - sync_blockdev(bd_inode->i_bdev); - break; - } - if (!--bdev->bd_openers) + if (!--bdev->bd_openers) { + switch (kind) { + case BDEV_FILE: + case BDEV_FS: + sync_blockdev(bd_inode->i_bdev); + break; + } kill_bdev(bdev); + } if (bdev->bd_contains == bdev) { if (disk->fops->release) ret = disk->fops->release(bd_inode, NULL);