f2fs: cleanup waiting routine for writeback pages in cp
[deliverable/linux.git] / fs / f2fs / f2fs.h
index 6dff777cd94a8f20e264723289ece8d46a65ed47..89dc7508faf2edf173441a9e25cad8a9ff4856aa 100644 (file)
 #include <linux/kobject.h>
 #include <linux/sched.h>
 
+#ifdef CONFIG_F2FS_CHECK_FS
+#define f2fs_bug_on(condition) BUG_ON(condition)
+#else
+#define f2fs_bug_on(condition)
+#endif
+
 /*
  * For mount options
  */
@@ -366,7 +372,7 @@ struct f2fs_sb_info {
        struct mutex writepages;                /* mutex for writepages() */
        bool por_doing;                         /* recovery is doing or not */
        bool on_build_free_nids;                /* build_free_nids is doing */
-       struct task_struct *cp_task;            /* checkpoint task */
+       wait_queue_head_t cp_wait;
 
        /* for orphan inode management */
        struct list_head orphan_inode_list;     /* orphan inode list */
@@ -584,8 +590,8 @@ static inline int dec_valid_block_count(struct f2fs_sb_info *sbi,
                                                blkcnt_t count)
 {
        spin_lock(&sbi->stat_lock);
-       BUG_ON(sbi->total_valid_block_count < (block_t) count);
-       BUG_ON(inode->i_blocks < count);
+       f2fs_bug_on(sbi->total_valid_block_count < (block_t) count);
+       f2fs_bug_on(inode->i_blocks < count);
        inode->i_blocks -= count;
        sbi->total_valid_block_count -= (block_t)count;
        spin_unlock(&sbi->stat_lock);
@@ -717,9 +723,9 @@ static inline void dec_valid_node_count(struct f2fs_sb_info *sbi,
 {
        spin_lock(&sbi->stat_lock);
 
-       BUG_ON(sbi->total_valid_block_count < count);
-       BUG_ON(sbi->total_valid_node_count < count);
-       BUG_ON(inode->i_blocks < count);
+       f2fs_bug_on(sbi->total_valid_block_count < count);
+       f2fs_bug_on(sbi->total_valid_node_count < count);
+       f2fs_bug_on(inode->i_blocks < count);
 
        inode->i_blocks -= count;
        sbi->total_valid_node_count -= count;
@@ -740,7 +746,7 @@ static inline unsigned int valid_node_count(struct f2fs_sb_info *sbi)
 static inline void inc_valid_inode_count(struct f2fs_sb_info *sbi)
 {
        spin_lock(&sbi->stat_lock);
-       BUG_ON(sbi->total_valid_inode_count == sbi->total_node_count);
+       f2fs_bug_on(sbi->total_valid_inode_count == sbi->total_node_count);
        sbi->total_valid_inode_count++;
        spin_unlock(&sbi->stat_lock);
 }
@@ -748,7 +754,7 @@ static inline void inc_valid_inode_count(struct f2fs_sb_info *sbi)
 static inline int dec_valid_inode_count(struct f2fs_sb_info *sbi)
 {
        spin_lock(&sbi->stat_lock);
-       BUG_ON(!sbi->total_valid_inode_count);
+       f2fs_bug_on(!sbi->total_valid_inode_count);
        sbi->total_valid_inode_count--;
        spin_unlock(&sbi->stat_lock);
        return 0;
@@ -769,7 +775,7 @@ static inline void f2fs_put_page(struct page *page, int unlock)
                return;
 
        if (unlock) {
-               BUG_ON(!PageLocked(page));
+               f2fs_bug_on(!PageLocked(page));
                unlock_page(page);
        }
        page_cache_release(page);
@@ -965,6 +971,7 @@ long f2fs_compat_ioctl(struct file *, unsigned int, unsigned long);
  */
 void f2fs_set_inode_flags(struct inode *);
 struct inode *f2fs_iget(struct super_block *, unsigned long);
+int try_to_free_nats(struct f2fs_sb_info *, int);
 void update_inode(struct inode *, struct page *);
 int update_inode_page(struct inode *);
 int f2fs_write_inode(struct inode *, struct writeback_control *);
@@ -1019,6 +1026,7 @@ void get_node_info(struct f2fs_sb_info *, nid_t, struct node_info *);
 int get_dnode_of_data(struct dnode_of_data *, pgoff_t, int);
 int truncate_inode_blocks(struct inode *, pgoff_t);
 int truncate_xattr_node(struct inode *, struct page *);
+int wait_on_node_pages_writeback(struct f2fs_sb_info *, nid_t);
 int remove_inode_page(struct inode *);
 struct page *new_inode_page(struct inode *, const struct qstr *);
 struct page *new_node_page(struct dnode_of_data *, unsigned int, struct page *);
@@ -1045,6 +1053,7 @@ void destroy_node_manager_caches(void);
  * segment.c
  */
 void f2fs_balance_fs(struct f2fs_sb_info *);
+void f2fs_balance_fs_bg(struct f2fs_sb_info *);
 void invalidate_blocks(struct f2fs_sb_info *, block_t);
 void clear_prefree_segments(struct f2fs_sb_info *);
 int npages_for_summary_flush(struct f2fs_sb_info *);
This page took 0.035416 seconds and 5 git commands to generate.