aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/block_dev.c14
-rw-r--r--fs/ext3/super.c11
-rw-r--r--fs/ext4/super.c11
-rw-r--r--fs/nfs/blocklayout/blocklayout.h2
-rw-r--r--fs/nfs/blocklayout/blocklayoutdev.c4
-rw-r--r--fs/nfs/blocklayout/blocklayoutdm.c8
-rw-r--r--fs/reiserfs/journal.c16
-rw-r--r--include/linux/fs.h2
8 files changed, 22 insertions, 46 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c
index ad2a14174ae0..3823d3ffb760 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1045,7 +1045,7 @@ void bd_set_size(struct block_device *bdev, loff_t size)
1045} 1045}
1046EXPORT_SYMBOL(bd_set_size); 1046EXPORT_SYMBOL(bd_set_size);
1047 1047
1048static int __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part); 1048static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part);
1049 1049
1050/* 1050/*
1051 * bd_mutex locking: 1051 * bd_mutex locking:
@@ -1400,9 +1400,8 @@ static int blkdev_open(struct inode * inode, struct file * filp)
1400 return blkdev_get(bdev, filp->f_mode, filp); 1400 return blkdev_get(bdev, filp->f_mode, filp);
1401} 1401}
1402 1402
1403static int __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part) 1403static void __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part)
1404{ 1404{
1405 int ret = 0;
1406 struct gendisk *disk = bdev->bd_disk; 1405 struct gendisk *disk = bdev->bd_disk;
1407 struct block_device *victim = NULL; 1406 struct block_device *victim = NULL;
1408 1407
@@ -1441,10 +1440,9 @@ static int __blkdev_put(struct block_device *bdev, fmode_t mode, int for_part)
1441 bdput(bdev); 1440 bdput(bdev);
1442 if (victim) 1441 if (victim)
1443 __blkdev_put(victim, mode, 1); 1442 __blkdev_put(victim, mode, 1);
1444 return ret;
1445} 1443}
1446 1444
1447int blkdev_put(struct block_device *bdev, fmode_t mode) 1445void blkdev_put(struct block_device *bdev, fmode_t mode)
1448{ 1446{
1449 mutex_lock(&bdev->bd_mutex); 1447 mutex_lock(&bdev->bd_mutex);
1450 1448
@@ -1488,15 +1486,15 @@ int blkdev_put(struct block_device *bdev, fmode_t mode)
1488 1486
1489 mutex_unlock(&bdev->bd_mutex); 1487 mutex_unlock(&bdev->bd_mutex);
1490 1488
1491 return __blkdev_put(bdev, mode, 0); 1489 __blkdev_put(bdev, mode, 0);
1492} 1490}
1493EXPORT_SYMBOL(blkdev_put); 1491EXPORT_SYMBOL(blkdev_put);
1494 1492
1495static int blkdev_close(struct inode * inode, struct file * filp) 1493static int blkdev_close(struct inode * inode, struct file * filp)
1496{ 1494{
1497 struct block_device *bdev = I_BDEV(filp->f_mapping->host); 1495 struct block_device *bdev = I_BDEV(filp->f_mapping->host);
1498 1496 blkdev_put(bdev, filp->f_mode);
1499 return blkdev_put(bdev, filp->f_mode); 1497 return 0;
1500} 1498}
1501 1499
1502static long block_ioctl(struct file *file, unsigned cmd, unsigned long arg) 1500static long block_ioctl(struct file *file, unsigned cmd, unsigned long arg)
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 3dc48cc8b6eb..6356665a74bb 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -362,22 +362,19 @@ fail:
362/* 362/*
363 * Release the journal device 363 * Release the journal device
364 */ 364 */
365static int ext3_blkdev_put(struct block_device *bdev) 365static void ext3_blkdev_put(struct block_device *bdev)
366{ 366{
367 return blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL); 367 blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
368} 368}
369 369
370static int ext3_blkdev_remove(struct ext3_sb_info *sbi) 370static void ext3_blkdev_remove(struct ext3_sb_info *sbi)
371{ 371{
372 struct block_device *bdev; 372 struct block_device *bdev;
373 int ret = -ENODEV;
374
375 bdev = sbi->journal_bdev; 373 bdev = sbi->journal_bdev;
376 if (bdev) { 374 if (bdev) {
377 ret = ext3_blkdev_put(bdev); 375 ext3_blkdev_put(bdev);
378 sbi->journal_bdev = NULL; 376 sbi->journal_bdev = NULL;
379 } 377 }
380 return ret;
381} 378}
382 379
383static inline struct inode *orphan_list_entry(struct list_head *l) 380static inline struct inode *orphan_list_entry(struct list_head *l)
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 24a146bde742..94cc84db7c9a 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -703,22 +703,19 @@ fail:
703/* 703/*
704 * Release the journal device 704 * Release the journal device
705 */ 705 */
706static int ext4_blkdev_put(struct block_device *bdev) 706static void ext4_blkdev_put(struct block_device *bdev)
707{ 707{
708 return blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL); 708 blkdev_put(bdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL);
709} 709}
710 710
711static int ext4_blkdev_remove(struct ext4_sb_info *sbi) 711static void ext4_blkdev_remove(struct ext4_sb_info *sbi)
712{ 712{
713 struct block_device *bdev; 713 struct block_device *bdev;
714 int ret = -ENODEV;
715
716 bdev = sbi->journal_bdev; 714 bdev = sbi->journal_bdev;
717 if (bdev) { 715 if (bdev) {
718 ret = ext4_blkdev_put(bdev); 716 ext4_blkdev_put(bdev);
719 sbi->journal_bdev = NULL; 717 sbi->journal_bdev = NULL;
720 } 718 }
721 return ret;
722} 719}
723 720
724static inline struct inode *orphan_list_entry(struct list_head *l) 721static inline struct inode *orphan_list_entry(struct list_head *l)
diff --git a/fs/nfs/blocklayout/blocklayout.h b/fs/nfs/blocklayout/blocklayout.h
index f4891bde8851..8485978993e8 100644
--- a/fs/nfs/blocklayout/blocklayout.h
+++ b/fs/nfs/blocklayout/blocklayout.h
@@ -173,7 +173,7 @@ struct bl_msg_hdr {
173/* blocklayoutdev.c */ 173/* blocklayoutdev.c */
174ssize_t bl_pipe_downcall(struct file *, const char __user *, size_t); 174ssize_t bl_pipe_downcall(struct file *, const char __user *, size_t);
175void bl_pipe_destroy_msg(struct rpc_pipe_msg *); 175void bl_pipe_destroy_msg(struct rpc_pipe_msg *);
176int nfs4_blkdev_put(struct block_device *bdev); 176void nfs4_blkdev_put(struct block_device *bdev);
177struct pnfs_block_dev *nfs4_blk_decode_device(struct nfs_server *server, 177struct pnfs_block_dev *nfs4_blk_decode_device(struct nfs_server *server,
178 struct pnfs_device *dev); 178 struct pnfs_device *dev);
179int nfs4_blk_process_layoutget(struct pnfs_layout_hdr *lo, 179int nfs4_blk_process_layoutget(struct pnfs_layout_hdr *lo,
diff --git a/fs/nfs/blocklayout/blocklayoutdev.c b/fs/nfs/blocklayout/blocklayoutdev.c
index a86c5bdad9e3..04303b5c9361 100644
--- a/fs/nfs/blocklayout/blocklayoutdev.c
+++ b/fs/nfs/blocklayout/blocklayoutdev.c
@@ -56,11 +56,11 @@ static int decode_sector_number(__be32 **rp, sector_t *sp)
56/* 56/*
57 * Release the block device 57 * Release the block device
58 */ 58 */
59int nfs4_blkdev_put(struct block_device *bdev) 59void nfs4_blkdev_put(struct block_device *bdev)
60{ 60{
61 dprintk("%s for device %d:%d\n", __func__, MAJOR(bdev->bd_dev), 61 dprintk("%s for device %d:%d\n", __func__, MAJOR(bdev->bd_dev),
62 MINOR(bdev->bd_dev)); 62 MINOR(bdev->bd_dev));
63 return blkdev_put(bdev, FMODE_READ); 63 blkdev_put(bdev, FMODE_READ);
64} 64}
65 65
66ssize_t bl_pipe_downcall(struct file *filp, const char __user *src, 66ssize_t bl_pipe_downcall(struct file *filp, const char __user *src,
diff --git a/fs/nfs/blocklayout/blocklayoutdm.c b/fs/nfs/blocklayout/blocklayoutdm.c
index 6fc7b5cae92b..8999cfddd866 100644
--- a/fs/nfs/blocklayout/blocklayoutdm.c
+++ b/fs/nfs/blocklayout/blocklayoutdm.c
@@ -88,14 +88,8 @@ out:
88 */ 88 */
89static void nfs4_blk_metadev_release(struct pnfs_block_dev *bdev) 89static void nfs4_blk_metadev_release(struct pnfs_block_dev *bdev)
90{ 90{
91 int rv;
92
93 dprintk("%s Releasing\n", __func__); 91 dprintk("%s Releasing\n", __func__);
94 rv = nfs4_blkdev_put(bdev->bm_mdev); 92 nfs4_blkdev_put(bdev->bm_mdev);
95 if (rv)
96 printk(KERN_ERR "NFS: %s nfs4_blkdev_put returns %d\n",
97 __func__, rv);
98
99 dev_remove(bdev->net, bdev->bm_mdev->bd_dev); 93 dev_remove(bdev->net, bdev->bm_mdev->bd_dev);
100} 94}
101 95
diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c
index afcadcc03e8a..742fdd4c209a 100644
--- a/fs/reiserfs/journal.c
+++ b/fs/reiserfs/journal.c
@@ -97,7 +97,7 @@ static int flush_commit_list(struct super_block *s,
97static int can_dirty(struct reiserfs_journal_cnode *cn); 97static int can_dirty(struct reiserfs_journal_cnode *cn);
98static int journal_join(struct reiserfs_transaction_handle *th, 98static int journal_join(struct reiserfs_transaction_handle *th,
99 struct super_block *sb, unsigned long nblocks); 99 struct super_block *sb, unsigned long nblocks);
100static int release_journal_dev(struct super_block *super, 100static void release_journal_dev(struct super_block *super,
101 struct reiserfs_journal *journal); 101 struct reiserfs_journal *journal);
102static int dirty_one_transaction(struct super_block *s, 102static int dirty_one_transaction(struct super_block *s,
103 struct reiserfs_journal_list *jl); 103 struct reiserfs_journal_list *jl);
@@ -2532,23 +2532,13 @@ static void journal_list_init(struct super_block *sb)
2532 SB_JOURNAL(sb)->j_current_jl = alloc_journal_list(sb); 2532 SB_JOURNAL(sb)->j_current_jl = alloc_journal_list(sb);
2533} 2533}
2534 2534
2535static int release_journal_dev(struct super_block *super, 2535static void release_journal_dev(struct super_block *super,
2536 struct reiserfs_journal *journal) 2536 struct reiserfs_journal *journal)
2537{ 2537{
2538 int result;
2539
2540 result = 0;
2541
2542 if (journal->j_dev_bd != NULL) { 2538 if (journal->j_dev_bd != NULL) {
2543 result = blkdev_put(journal->j_dev_bd, journal->j_dev_mode); 2539 blkdev_put(journal->j_dev_bd, journal->j_dev_mode);
2544 journal->j_dev_bd = NULL; 2540 journal->j_dev_bd = NULL;
2545 } 2541 }
2546
2547 if (result != 0) {
2548 reiserfs_warning(super, "sh-457",
2549 "Cannot release journal device: %i", result);
2550 }
2551 return result;
2552} 2542}
2553 2543
2554static int journal_init_dev(struct super_block *super, 2544static int journal_init_dev(struct super_block *super,
diff --git a/include/linux/fs.h b/include/linux/fs.h
index b5a24ba83b6f..43db02e9c9fa 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2091,7 +2091,7 @@ extern struct block_device *blkdev_get_by_path(const char *path, fmode_t mode,
2091 void *holder); 2091 void *holder);
2092extern struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode, 2092extern struct block_device *blkdev_get_by_dev(dev_t dev, fmode_t mode,
2093 void *holder); 2093 void *holder);
2094extern int blkdev_put(struct block_device *bdev, fmode_t mode); 2094extern void blkdev_put(struct block_device *bdev, fmode_t mode);
2095#ifdef CONFIG_SYSFS 2095#ifdef CONFIG_SYSFS
2096extern int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk); 2096extern int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk);
2097extern void bd_unlink_disk_holder(struct block_device *bdev, 2097extern void bd_unlink_disk_holder(struct block_device *bdev,