Small preparational chages for the next patch:
 * export writeback_inodes_wb() and add new argument 'struct user_beancounter 
*ub'
 * add beancounter pointer to struct wb_writeback_work.
 * Pass beacounter to __bdi_start_writeback().

https://jira.sw.ru/browse/PSBM-33841

Signed-off-by: Andrey Ryabinin <[email protected]>
---
 fs/fs-writeback.c           | 17 +++++++++++------
 include/linux/backing-dev.h |  2 ++
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index ac8066b..91c1b07 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -51,6 +51,7 @@ struct wb_writeback_work {
 
        struct list_head list;          /* pending work list */
        struct completion *done;        /* set if the caller waits */
+       struct user_beancounter *ub;
 };
 
 /*
@@ -130,7 +131,8 @@ out_unlock:
 
 static void
 __bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages,
-                     bool range_cyclic, enum wb_reason reason)
+                       bool range_cyclic, enum wb_reason reason,
+                       struct user_beancounter *ub)
 {
        struct wb_writeback_work *work;
 
@@ -149,6 +151,8 @@ __bdi_start_writeback(struct backing_dev_info *bdi, long 
nr_pages,
        work->nr_pages  = nr_pages;
        work->range_cyclic = range_cyclic;
        work->reason    = reason;
+       work->ub = ub;
+       work->for_background = (reason == WB_REASON_BACKGROUND);
 
        bdi_queue_work(bdi, work);
 }
@@ -168,7 +172,7 @@ __bdi_start_writeback(struct backing_dev_info *bdi, long 
nr_pages,
 void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages,
                        enum wb_reason reason)
 {
-       __bdi_start_writeback(bdi, nr_pages, true, reason);
+       __bdi_start_writeback(bdi, nr_pages, true, reason, NULL);
 }
 
 /**
@@ -809,14 +813,15 @@ static long __writeback_inodes_wb(struct bdi_writeback 
*wb,
        return wrote;
 }
 
-static long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages,
-                               enum wb_reason reason)
+long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages,
+                       enum wb_reason reason, struct user_beancounter *ub)
 {
        struct wb_writeback_work work = {
                .nr_pages       = nr_pages,
                .sync_mode      = WB_SYNC_NONE,
                .range_cyclic   = 1,
                .reason         = reason,
+               .ub             = ub,
        };
 
        spin_lock(&wb->list_lock);
@@ -1115,7 +1120,7 @@ void bdi_writeback_workfn(struct work_struct *work)
                 * enough for efficient IO.
                 */
                pages_written = writeback_inodes_wb(&bdi->wb, 1024,
-                                                   WB_REASON_FORKER_THREAD);
+                                               WB_REASON_FORKER_THREAD, NULL);
                trace_writeback_pages_written(pages_written);
        }
 
@@ -1142,7 +1147,7 @@ void wakeup_flusher_threads(long nr_pages, enum wb_reason 
reason)
        list_for_each_entry_rcu(bdi, &bdi_list, bdi_list) {
                if (!bdi_has_dirty_io(bdi))
                        continue;
-               __bdi_start_writeback(bdi, nr_pages, false, reason);
+               __bdi_start_writeback(bdi, nr_pages, false, reason, NULL);
        }
        rcu_read_unlock();
 }
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h
index 859504b..b7668cf 100644
--- a/include/linux/backing-dev.h
+++ b/include/linux/backing-dev.h
@@ -130,6 +130,8 @@ int bdi_setup_and_register(struct backing_dev_info *, char 
*, unsigned int);
 void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages,
                        enum wb_reason reason);
 void bdi_start_background_writeback(struct backing_dev_info *bdi);
+long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages,
+                       enum wb_reason reason, struct user_beancounter *ub);
 void bdi_writeback_workfn(struct work_struct *work);
 int bdi_has_dirty_io(struct backing_dev_info *bdi);
 void bdi_wakeup_thread_delayed(struct backing_dev_info *bdi);
-- 
2.4.10

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to