diff options
-rw-r--r-- | fs/block_dev.c | 8 | ||||
-rw-r--r-- | fs/fs-writeback.c | 16 | ||||
-rw-r--r-- | include/linux/backing-dev.h | 18 | ||||
-rw-r--r-- | include/linux/fs.h | 8 | ||||
-rw-r--r-- | mm/backing-dev.c | 1 |
5 files changed, 26 insertions, 25 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index e545cbfbe5b2..f04c873a7365 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -547,7 +547,8 @@ static struct file_system_type bd_type = { | |||
547 | .kill_sb = kill_anon_super, | 547 | .kill_sb = kill_anon_super, |
548 | }; | 548 | }; |
549 | 549 | ||
550 | static struct super_block *blockdev_superblock __read_mostly; | 550 | struct super_block *blockdev_superblock __read_mostly; |
551 | EXPORT_SYMBOL_GPL(blockdev_superblock); | ||
551 | 552 | ||
552 | void __init bdev_cache_init(void) | 553 | void __init bdev_cache_init(void) |
553 | { | 554 | { |
@@ -688,11 +689,6 @@ static struct block_device *bd_acquire(struct inode *inode) | |||
688 | return bdev; | 689 | return bdev; |
689 | } | 690 | } |
690 | 691 | ||
691 | int sb_is_blkdev_sb(struct super_block *sb) | ||
692 | { | ||
693 | return sb == blockdev_superblock; | ||
694 | } | ||
695 | |||
696 | /* Call when you free inode */ | 692 | /* Call when you free inode */ |
697 | 693 | ||
698 | void bd_forget(struct inode *inode) | 694 | void bd_forget(struct inode *inode) |
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index a69d2e10d514..34d1cb854fc1 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -78,22 +78,6 @@ int writeback_in_progress(struct backing_dev_info *bdi) | |||
78 | } | 78 | } |
79 | EXPORT_SYMBOL(writeback_in_progress); | 79 | EXPORT_SYMBOL(writeback_in_progress); |
80 | 80 | ||
81 | struct backing_dev_info *inode_to_bdi(struct inode *inode) | ||
82 | { | ||
83 | struct super_block *sb; | ||
84 | |||
85 | if (!inode) | ||
86 | return &noop_backing_dev_info; | ||
87 | |||
88 | sb = inode->i_sb; | ||
89 | #ifdef CONFIG_BLOCK | ||
90 | if (sb_is_blkdev_sb(sb)) | ||
91 | return blk_get_backing_dev_info(I_BDEV(inode)); | ||
92 | #endif | ||
93 | return sb->s_bdi; | ||
94 | } | ||
95 | EXPORT_SYMBOL_GPL(inode_to_bdi); | ||
96 | |||
97 | static inline struct inode *wb_inode(struct list_head *head) | 81 | static inline struct inode *wb_inode(struct list_head *head) |
98 | { | 82 | { |
99 | return list_entry(head, struct inode, i_wb_list); | 83 | return list_entry(head, struct inode, i_wb_list); |
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index 5e39f7a8efed..785782034e86 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h | |||
@@ -11,11 +11,10 @@ | |||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/fs.h> | 12 | #include <linux/fs.h> |
13 | #include <linux/sched.h> | 13 | #include <linux/sched.h> |
14 | #include <linux/blkdev.h> | ||
14 | #include <linux/writeback.h> | 15 | #include <linux/writeback.h> |
15 | #include <linux/backing-dev-defs.h> | 16 | #include <linux/backing-dev-defs.h> |
16 | 17 | ||
17 | struct backing_dev_info *inode_to_bdi(struct inode *inode); | ||
18 | |||
19 | int __must_check bdi_init(struct backing_dev_info *bdi); | 18 | int __must_check bdi_init(struct backing_dev_info *bdi); |
20 | void bdi_destroy(struct backing_dev_info *bdi); | 19 | void bdi_destroy(struct backing_dev_info *bdi); |
21 | 20 | ||
@@ -149,6 +148,21 @@ extern struct backing_dev_info noop_backing_dev_info; | |||
149 | 148 | ||
150 | int writeback_in_progress(struct backing_dev_info *bdi); | 149 | int writeback_in_progress(struct backing_dev_info *bdi); |
151 | 150 | ||
151 | static inline struct backing_dev_info *inode_to_bdi(struct inode *inode) | ||
152 | { | ||
153 | struct super_block *sb; | ||
154 | |||
155 | if (!inode) | ||
156 | return &noop_backing_dev_info; | ||
157 | |||
158 | sb = inode->i_sb; | ||
159 | #ifdef CONFIG_BLOCK | ||
160 | if (sb_is_blkdev_sb(sb)) | ||
161 | return blk_get_backing_dev_info(I_BDEV(inode)); | ||
162 | #endif | ||
163 | return sb->s_bdi; | ||
164 | } | ||
165 | |||
152 | static inline int bdi_congested(struct backing_dev_info *bdi, int bdi_bits) | 166 | static inline int bdi_congested(struct backing_dev_info *bdi, int bdi_bits) |
153 | { | 167 | { |
154 | if (bdi->congested_fn) | 168 | if (bdi->congested_fn) |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 1ef63900243c..ce100b87fba3 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -2240,7 +2240,13 @@ extern struct super_block *freeze_bdev(struct block_device *); | |||
2240 | extern void emergency_thaw_all(void); | 2240 | extern void emergency_thaw_all(void); |
2241 | extern int thaw_bdev(struct block_device *bdev, struct super_block *sb); | 2241 | extern int thaw_bdev(struct block_device *bdev, struct super_block *sb); |
2242 | extern int fsync_bdev(struct block_device *); | 2242 | extern int fsync_bdev(struct block_device *); |
2243 | extern int sb_is_blkdev_sb(struct super_block *sb); | 2243 | |
2244 | extern struct super_block *blockdev_superblock; | ||
2245 | |||
2246 | static inline bool sb_is_blkdev_sb(struct super_block *sb) | ||
2247 | { | ||
2248 | return sb == blockdev_superblock; | ||
2249 | } | ||
2244 | #else | 2250 | #else |
2245 | static inline void bd_forget(struct inode *inode) {} | 2251 | static inline void bd_forget(struct inode *inode) {} |
2246 | static inline int sync_blockdev(struct block_device *bdev) { return 0; } | 2252 | static inline int sync_blockdev(struct block_device *bdev) { return 0; } |
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index ff85ecb7d6a1..b0707d1b1d38 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c | |||
@@ -18,6 +18,7 @@ struct backing_dev_info noop_backing_dev_info = { | |||
18 | .name = "noop", | 18 | .name = "noop", |
19 | .capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK, | 19 | .capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK, |
20 | }; | 20 | }; |
21 | EXPORT_SYMBOL_GPL(noop_backing_dev_info); | ||
21 | 22 | ||
22 | static struct class *bdi_class; | 23 | static struct class *bdi_class; |
23 | 24 | ||