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 |    8 ++++++++
 1 files changed, 8 insertions(+)

diff -puN fs/ext3/super.c~ext3-external-journal-bd_claim fs/ext3/super.c
--- 25/fs/ext3/super.c~ext3-external-journal-bd_claim	2003-11-20 19:38:43.000000000 -0800
+++ 25-akpm/fs/ext3/super.c	2003-11-20 19:38:43.000000000 -0800
@@ -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(s
 	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) {

_