diff options
author | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2008-05-07 14:01:30 -0400 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2008-07-14 12:10:52 -0400 |
commit | 4ee6afd34409d296782a5b667d7991b1050e910a (patch) | |
tree | 2a9aa6e7361d923afc60a2a5ee8cb76542152ca8 | |
parent | ae8547b0a9e5d718ce272ddc48f91703a0f52a0b (diff) |
VFS: export sync_sb_inodes
This patch exports the 'sync_sb_inodes()' which is needed for
UBIFS because it has to force write-back from time to time.
Namely, the UBIFS budgeting subsystem forces write-back when
its pessimistic callculations show that there is no free
space on the media.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
-rw-r--r-- | fs/fs-writeback.c | 11 | ||||
-rw-r--r-- | include/linux/fs.h | 2 |
2 files changed, 11 insertions, 2 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 16519fe1399c..25adfc3c693a 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -439,8 +439,8 @@ __writeback_single_inode(struct inode *inode, struct writeback_control *wbc) | |||
439 | * on the writer throttling path, and we get decent balancing between many | 439 | * on the writer throttling path, and we get decent balancing between many |
440 | * throttled threads: we don't want them all piling up on inode_sync_wait. | 440 | * throttled threads: we don't want them all piling up on inode_sync_wait. |
441 | */ | 441 | */ |
442 | static void | 442 | void generic_sync_sb_inodes(struct super_block *sb, |
443 | sync_sb_inodes(struct super_block *sb, struct writeback_control *wbc) | 443 | struct writeback_control *wbc) |
444 | { | 444 | { |
445 | const unsigned long start = jiffies; /* livelock avoidance */ | 445 | const unsigned long start = jiffies; /* livelock avoidance */ |
446 | 446 | ||
@@ -526,6 +526,13 @@ sync_sb_inodes(struct super_block *sb, struct writeback_control *wbc) | |||
526 | spin_unlock(&inode_lock); | 526 | spin_unlock(&inode_lock); |
527 | return; /* Leave any unwritten inodes on s_io */ | 527 | return; /* Leave any unwritten inodes on s_io */ |
528 | } | 528 | } |
529 | EXPORT_SYMBOL_GPL(generic_sync_sb_inodes); | ||
530 | |||
531 | static void sync_sb_inodes(struct super_block *sb, | ||
532 | struct writeback_control *wbc) | ||
533 | { | ||
534 | generic_sync_sb_inodes(sb, wbc); | ||
535 | } | ||
529 | 536 | ||
530 | /* | 537 | /* |
531 | * Start writeback of dirty pagecache data against all unlocked inodes. | 538 | * Start writeback of dirty pagecache data against all unlocked inodes. |
diff --git a/include/linux/fs.h b/include/linux/fs.h index d8e2762ed14d..f9d2aab47eda 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -1729,6 +1729,8 @@ static inline void invalidate_remote_inode(struct inode *inode) | |||
1729 | extern int invalidate_inode_pages2(struct address_space *mapping); | 1729 | extern int invalidate_inode_pages2(struct address_space *mapping); |
1730 | extern int invalidate_inode_pages2_range(struct address_space *mapping, | 1730 | extern int invalidate_inode_pages2_range(struct address_space *mapping, |
1731 | pgoff_t start, pgoff_t end); | 1731 | pgoff_t start, pgoff_t end); |
1732 | extern void generic_sync_sb_inodes(struct super_block *sb, | ||
1733 | struct writeback_control *wbc); | ||
1732 | extern int write_inode_now(struct inode *, int); | 1734 | extern int write_inode_now(struct inode *, int); |
1733 | extern int filemap_fdatawrite(struct address_space *); | 1735 | extern int filemap_fdatawrite(struct address_space *); |
1734 | extern int filemap_flush(struct address_space *); | 1736 | extern int filemap_flush(struct address_space *); |