]> git.hungrycats.org Git - linux/commitdiff
[PATCH] ext3: bd_claim for journal device
authorAndrew Morton <akpm@osdl.org>
Mon, 29 Dec 2003 13:49:13 +0000 (05:49 -0800)
committerLinus Torvalds <torvalds@home.osdl.org>
Mon, 29 Dec 2003 13:49:13 +0000 (05:49 -0800)
From: Neil Brown <neilb@cse.unsw.edu.au>

Change ext3 to run bd_claim() against external journal devices. It is
significant only for those who have ext3 journals on a separate device, and
gets exclusive access to that device.

fs/ext3/super.c

index 94b10ec1edcd7b8b0db18502f8b0e19308aceab8..d92187197f68e7e0dde1523d8c2cbb2106b0b3a8 100644 (file)
@@ -340,6 +340,7 @@ fail:
  */
 static int ext3_blkdev_put(struct block_device *bdev)
 {
+       bd_release(bdev);
        return blkdev_put(bdev, BDEV_FS);
 }
 
@@ -1480,6 +1481,13 @@ static journal_t *ext3_get_dev_journal(struct super_block *sb,
        if (bdev == NULL)
                return NULL;
 
+       if (bd_claim(bdev, sb)) {
+               printk(KERN_ERR
+                       "EXT3: failed to claim external journal device.\n");
+               blkdev_put(bdev, BDEV_FS);
+               return NULL;
+       }
+
        blocksize = sb->s_blocksize;
        hblock = bdev_hardsect_size(bdev);
        if (blocksize < hblock) {