Go to the source code of this file.
Defines | |
| #define | MAX_WRITEBACK_PAGES 1024 |
Functions | |
| static long | sync_writeback_pages (void) |
| EXPORT_SYMBOL (laptop_mode) | |
| static void | background_writeout (unsigned long _min_pages) |
| static int | calc_period_shift (void) |
| static void | update_completion_period (void) |
| int | dirty_background_ratio_handler (struct ctl_table *table, int write, struct file *filp, void __user *buffer, size_t *lenp, loff_t *ppos) |
| int | dirty_background_bytes_handler (struct ctl_table *table, int write, struct file *filp, void __user *buffer, size_t *lenp, loff_t *ppos) |
| int | dirty_ratio_handler (struct ctl_table *table, int write, struct file *filp, void __user *buffer, size_t *lenp, loff_t *ppos) |
| int | dirty_bytes_handler (struct ctl_table *table, int write, struct file *filp, void __user *buffer, size_t *lenp, loff_t *ppos) |
| static void | __bdi_writeout_inc (struct backing_dev_info *bdi) |
| void | bdi_writeout_inc (struct backing_dev_info *bdi) |
| EXPORT_SYMBOL_GPL (bdi_writeout_inc) | |
| void | task_dirty_inc (struct task_struct *tsk) |
| static void | bdi_writeout_fraction (struct backing_dev_info *bdi, long *numerator, long *denominator) |
| static void | clip_bdi_dirty_limit (struct backing_dev_info *bdi, long dirty, long *pbdi_dirty) |
| static void | task_dirties_fraction (struct task_struct *tsk, long *numerator, long *denominator) |
| static void | task_dirty_limit (struct task_struct *tsk, long *pdirty) |
| static | DEFINE_SPINLOCK (bdi_lock) |
| int | bdi_set_min_ratio (struct backing_dev_info *bdi, unsigned int min_ratio) |
| int | bdi_set_max_ratio (struct backing_dev_info *bdi, unsigned max_ratio) |
| EXPORT_SYMBOL (bdi_set_max_ratio) | |
| static unsigned long | highmem_dirtyable_memory (unsigned long total) |
| unsigned long | determine_dirtyable_memory (void) |
| determine_dirtyable_memory - amount of memory that may be used | |
| void | get_dirty_limits (unsigned long *pbackground, unsigned long *pdirty, unsigned long *pbdi_dirty, struct backing_dev_info *bdi) |
| static void | balance_dirty_pages (struct address_space *mapping) |
| void | set_page_dirty_balance (struct page *page, int page_mkwrite) |
| void | balance_dirty_pages_ratelimited_nr (struct address_space *mapping, unsigned long nr_pages_dirtied) |
| balance_dirty_pages_ratelimited_nr - balance dirty memory state : address_space which was dirtied : number of pages which the caller has just dirtied | |
| EXPORT_SYMBOL (balance_dirty_pages_ratelimited_nr) | |
| void | throttle_vm_writeout (gfp_t gfp_mask) |
| int | wakeup_pdflush (long nr_pages) |
| static void | wb_timer_fn (unsigned long unused) |
| static void | laptop_timer_fn (unsigned long unused) |
| static | DEFINE_TIMER (wb_timer, wb_timer_fn, 0, 0) |
| static | DEFINE_TIMER (laptop_mode_wb_timer, laptop_timer_fn, 0, 0) |
| static void | wb_kupdate (unsigned long arg) |
| int | dirty_writeback_centisecs_handler (ctl_table *table, int write, struct file *file, void __user *buffer, size_t *length, loff_t *ppos) |
| static void | laptop_flush (unsigned long unused) |
| void | laptop_io_completion (void) |
| void | laptop_sync_completion (void) |
| void | writeback_set_ratelimit (void) |
| static int __cpuinit | ratelimit_handler (struct notifier_block *self, unsigned long u, void *v) |
| void __init | page_writeback_init (void) |
| int | write_cache_pages (struct address_space *mapping, struct writeback_control *wbc, writepage_t writepage, void *data) |
| write_cache_pages - walk the list of dirty pages of the given address space and write all of them. | |
| EXPORT_SYMBOL (write_cache_pages) | |
| static int | __writepage (struct page *page, struct writeback_control *wbc, void *data) |
| int | generic_writepages (struct address_space *mapping, struct writeback_control *wbc) |
| generic_writepages - walk the list of dirty pages of the given address space and writepage() all of them. | |
| EXPORT_SYMBOL (generic_writepages) | |
| int | do_writepages (struct address_space *mapping, struct writeback_control *wbc) |
| int | write_one_page (struct page *page, int wait) |
| EXPORT_SYMBOL (write_one_page) | |
| int | __set_page_dirty_no_writeback (struct page *page) |
| int | __set_page_dirty_nobuffers (struct page *page) |
| EXPORT_SYMBOL (__set_page_dirty_nobuffers) | |
| int | redirty_page_for_writepage (struct writeback_control *wbc, struct page *page) |
| EXPORT_SYMBOL (redirty_page_for_writepage) | |
| int | set_page_dirty (struct page *page) |
| EXPORT_SYMBOL (set_page_dirty) | |
| int | set_page_dirty_lock (struct page *page) |
| EXPORT_SYMBOL (set_page_dirty_lock) | |
| int | clear_page_dirty_for_io (struct page *page) |
| EXPORT_SYMBOL (clear_page_dirty_for_io) | |
| int | test_clear_page_writeback (struct page *page) |
| int | test_set_page_writeback (struct page *page) |
| EXPORT_SYMBOL (test_set_page_writeback) | |
| int | mapping_tagged (struct address_space *mapping, int tag) |
| EXPORT_SYMBOL (mapping_tagged) | |
Variables | |
| static long | ratelimit_pages = 32 |
| int | dirty_background_ratio = 5 |
| unsigned long | dirty_background_bytes |
| int | vm_highmem_is_dirtyable |
| int | vm_dirty_ratio = 10 |
| unsigned long | vm_dirty_bytes |
| int | dirty_writeback_interval = 5 * HZ |
| int | dirty_expire_interval = 30 * HZ |
| int | block_dump |
| int | laptop_mode |
| static struct prop_descriptor | vm_completions |
| static struct prop_descriptor | vm_dirties |
| static unsigned int | bdi_min_ratio |
| static struct notifier_block __cpuinitdata | ratelimit_nb |
| #define MAX_WRITEBACK_PAGES 1024 |
Definition at line 45 of file page-writeback.c.
| static void __bdi_writeout_inc | ( | struct backing_dev_info * | bdi | ) | [inline, static] |
Definition at line 235 of file page-writeback.c.
| int __set_page_dirty_no_writeback | ( | struct page * | page | ) |
Definition at line 1206 of file page-writeback.c.
| int __set_page_dirty_nobuffers | ( | struct page * | page | ) |
Definition at line 1228 of file page-writeback.c.
| static int __writepage | ( | struct page * | page, | |
| struct writeback_control * | wbc, | |||
| void * | data | |||
| ) | [static] |
Definition at line 1120 of file page-writeback.c.
| static void background_writeout | ( | unsigned long | _min_pages | ) | [static] |
Definition at line 692 of file page-writeback.c.
| static void balance_dirty_pages | ( | struct address_space * | mapping | ) | [static] |
Definition at line 500 of file page-writeback.c.
| void balance_dirty_pages_ratelimited_nr | ( | struct address_space * | mapping, | |
| unsigned long | nr_pages_dirtied | |||
| ) |
balance_dirty_pages_ratelimited_nr - balance dirty memory state : address_space which was dirtied : number of pages which the caller has just dirtied
Processes which are dirtying memory should call in here once for each page which was newly dirtied. The function will periodically check the system's dirty state and will initiate writeback if needed.
On really big machines, get_writeback_state is expensive, so try to avoid calling it too often (ratelimiting). But once we're over the dirty memory limit we decrease the ratelimiting by a lot, to prevent individual processes from overshooting the limit by (ratelimit_pages) each.
Definition at line 631 of file page-writeback.c.
| int bdi_set_max_ratio | ( | struct backing_dev_info * | bdi, | |
| unsigned | max_ratio | |||
| ) |
Definition at line 355 of file page-writeback.c.
| int bdi_set_min_ratio | ( | struct backing_dev_info * | bdi, | |
| unsigned int | min_ratio | |||
| ) |
Definition at line 333 of file page-writeback.c.
| static void bdi_writeout_fraction | ( | struct backing_dev_info * | bdi, | |
| long * | numerator, | |||
| long * | denominator | |||
| ) | [static] |
Definition at line 259 of file page-writeback.c.
| void bdi_writeout_inc | ( | struct backing_dev_info * | bdi | ) |
Definition at line 241 of file page-writeback.c.
| static int calc_period_shift | ( | void | ) | [static] |
Definition at line 154 of file page-writeback.c.
| int clear_page_dirty_for_io | ( | struct page * | page | ) |
Definition at line 1335 of file page-writeback.c.
| static void clip_bdi_dirty_limit | ( | struct backing_dev_info * | bdi, | |
| long | dirty, | |||
| long * | pbdi_dirty | |||
| ) | [static] |
Definition at line 277 of file page-writeback.c.
| static DEFINE_SPINLOCK | ( | bdi_lock | ) | [static] |
| static DEFINE_TIMER | ( | laptop_mode_wb_timer | , | |
| laptop_timer_fn | , | |||
| 0 | , | |||
| 0 | ||||
| ) | [static] |
| static DEFINE_TIMER | ( | wb_timer | , | |
| wb_timer_fn | , | |||
| 0 | , | |||
| 0 | ||||
| ) | [static] |
| unsigned long determine_dirtyable_memory | ( | void | ) |
determine_dirtyable_memory - amount of memory that may be used
Returns the numebr of pages that can currently be freed and used by the kernel for direct mappings.
Definition at line 424 of file page-writeback.c.
| int dirty_background_bytes_handler | ( | struct ctl_table * | table, | |
| int | write, | |||
| struct file * | filp, | |||
| void __user * | buffer, | |||
| size_t * | lenp, | |||
| loff_t * | ppos | |||
| ) |
Definition at line 188 of file page-writeback.c.
| int dirty_background_ratio_handler | ( | struct ctl_table * | table, | |
| int | write, | |||
| struct file * | filp, | |||
| void __user * | buffer, | |||
| size_t * | lenp, | |||
| loff_t * | ppos | |||
| ) |
Definition at line 176 of file page-writeback.c.
| int dirty_bytes_handler | ( | struct ctl_table * | table, | |
| int | write, | |||
| struct file * | filp, | |||
| void __user * | buffer, | |||
| size_t * | lenp, | |||
| loff_t * | ppos | |||
| ) |
Definition at line 216 of file page-writeback.c.
| int dirty_ratio_handler | ( | struct ctl_table * | table, | |
| int | write, | |||
| struct file * | filp, | |||
| void __user * | buffer, | |||
| size_t * | lenp, | |||
| loff_t * | ppos | |||
| ) |
Definition at line 200 of file page-writeback.c.
| int dirty_writeback_centisecs_handler | ( | ctl_table * | table, | |
| int | write, | |||
| struct file * | file, | |||
| void __user * | buffer, | |||
| size_t * | length, | |||
| loff_t * | ppos | |||
| ) |
Definition at line 810 of file page-writeback.c.
| int do_writepages | ( | struct address_space * | mapping, | |
| struct writeback_control * | wbc | |||
| ) |
Definition at line 1149 of file page-writeback.c.
| EXPORT_SYMBOL | ( | mapping_tagged | ) |
| EXPORT_SYMBOL | ( | test_set_page_writeback | ) |
| EXPORT_SYMBOL | ( | clear_page_dirty_for_io | ) |
| EXPORT_SYMBOL | ( | set_page_dirty_lock | ) |
| EXPORT_SYMBOL | ( | set_page_dirty | ) |
| EXPORT_SYMBOL | ( | redirty_page_for_writepage | ) |
| EXPORT_SYMBOL | ( | __set_page_dirty_nobuffers | ) |
| EXPORT_SYMBOL | ( | write_one_page | ) |
| EXPORT_SYMBOL | ( | generic_writepages | ) |
| EXPORT_SYMBOL | ( | write_cache_pages | ) |
| EXPORT_SYMBOL | ( | balance_dirty_pages_ratelimited_nr | ) |
| EXPORT_SYMBOL | ( | bdi_set_max_ratio | ) |
| EXPORT_SYMBOL | ( | laptop_mode | ) |
| EXPORT_SYMBOL_GPL | ( | bdi_writeout_inc | ) |
| int generic_writepages | ( | struct address_space * | mapping, | |
| struct writeback_control * | wbc | |||
| ) |
generic_writepages - walk the list of dirty pages of the given address space and writepage() all of them.
: address space structure to write : subtract the number of written pages from *->nr_to_write
This is a library function, which implements the writepages() address_space_operation.
Definition at line 1137 of file page-writeback.c.
| void get_dirty_limits | ( | unsigned long * | pbackground, | |
| unsigned long * | pdirty, | |||
| unsigned long * | pbdi_dirty, | |||
| struct backing_dev_info * | bdi | |||
| ) |
Definition at line 437 of file page-writeback.c.
| static unsigned long highmem_dirtyable_memory | ( | unsigned long | total | ) | [static] |
Definition at line 394 of file page-writeback.c.
| static void laptop_flush | ( | unsigned long | unused | ) | [static] |
Definition at line 827 of file page-writeback.c.
| void laptop_io_completion | ( | void | ) |
Definition at line 842 of file page-writeback.c.
| void laptop_sync_completion | ( | void | ) |
Definition at line 852 of file page-writeback.c.
| static void laptop_timer_fn | ( | unsigned long | unused | ) | [static] |
Definition at line 832 of file page-writeback.c.
| int mapping_tagged | ( | struct address_space * | mapping, | |
| int | tag | |||
| ) |
Definition at line 1460 of file page-writeback.c.
| void __init page_writeback_init | ( | void | ) |
Definition at line 914 of file page-writeback.c.
| static int __cpuinit ratelimit_handler | ( | struct notifier_block * | self, | |
| unsigned long | u, | |||
| void * | v | |||
| ) | [static] |
Definition at line 885 of file page-writeback.c.
| int redirty_page_for_writepage | ( | struct writeback_control * | wbc, | |
| struct page * | page | |||
| ) |
Definition at line 1268 of file page-writeback.c.
| int set_page_dirty | ( | struct page * | page | ) |
Definition at line 1279 of file page-writeback.c.
| void set_page_dirty_balance | ( | struct page * | page, | |
| int | page_mkwrite | |||
| ) |
Definition at line 607 of file page-writeback.c.
| int set_page_dirty_lock | ( | struct page * | page | ) |
Definition at line 1309 of file page-writeback.c.
| static long sync_writeback_pages | ( | void | ) | [inline, static] |
Definition at line 59 of file page-writeback.c.
| static void task_dirties_fraction | ( | struct task_struct * | tsk, | |
| long * | numerator, | |||
| long * | denominator | |||
| ) | [inline, static] |
Definition at line 296 of file page-writeback.c.
| void task_dirty_inc | ( | struct task_struct * | tsk | ) |
Definition at line 251 of file page-writeback.c.
| static void task_dirty_limit | ( | struct task_struct * | tsk, | |
| long * | pdirty | |||
| ) | [static] |
Definition at line 310 of file page-writeback.c.
| int test_clear_page_writeback | ( | struct page * | page | ) |
Definition at line 1392 of file page-writeback.c.
| int test_set_page_writeback | ( | struct page * | page | ) |
Definition at line 1422 of file page-writeback.c.
| void throttle_vm_writeout | ( | gfp_t | gfp_mask | ) |
Definition at line 659 of file page-writeback.c.
| static void update_completion_period | ( | void | ) | [static] |
Definition at line 169 of file page-writeback.c.
| int wakeup_pdflush | ( | long | nr_pages | ) |
Definition at line 734 of file page-writeback.c.
| static void wb_kupdate | ( | unsigned long | arg | ) | [static] |
Definition at line 764 of file page-writeback.c.
| static void wb_timer_fn | ( | unsigned long | unused | ) | [static] |
Definition at line 821 of file page-writeback.c.
| int write_cache_pages | ( | struct address_space * | mapping, | |
| struct writeback_control * | wbc, | |||
| writepage_t | writepage, | |||
| void * | data | |||
| ) |
write_cache_pages - walk the list of dirty pages of the given address space and write all of them.
: address space structure to write : subtract the number of written pages from *->nr_to_write : function called for each page : data passed to writepage function
If a page is already under I/O, write_cache_pages() skips it, even if it's dirty. This is desirable behaviour for memory-cleaning writeback, but it is INCORRECT for data-integrity system calls such as fsync(). fsync() and msync() need to guarantee that all the data which was dirty at the time the call was made get new I/O started against them. If wbc->sync_mode is WB_SYNC_ALL then we were called for data integrity and we must wait for existing IO to complete.
Definition at line 944 of file page-writeback.c.
| int write_one_page | ( | struct page * | page, | |
| int | wait | |||
| ) |
Definition at line 1173 of file page-writeback.c.
| void writeback_set_ratelimit | ( | void | ) |
Definition at line 875 of file page-writeback.c.
unsigned int bdi_min_ratio [static] |
Definition at line 331 of file page-writeback.c.
| int block_dump |
Definition at line 115 of file page-writeback.c.
| unsigned long dirty_background_bytes |
Definition at line 75 of file page-writeback.c.
| int dirty_background_ratio = 5 |
Definition at line 69 of file page-writeback.c.
| int dirty_expire_interval = 30 * HZ |
Definition at line 107 of file page-writeback.c.
| int dirty_writeback_interval = 5 * HZ |
Definition at line 98 of file page-writeback.c.
| int laptop_mode |
Definition at line 121 of file page-writeback.c.
struct notifier_block __cpuinitdata ratelimit_nb [static] |
Initial value:
{
.notifier_call = ratelimit_handler,
.next = NULL,
}
Definition at line 891 of file page-writeback.c.
long ratelimit_pages = 32 [static] |
Definition at line 51 of file page-writeback.c.
struct prop_descriptor vm_completions [static] |
Definition at line 146 of file page-writeback.c.
struct prop_descriptor vm_dirties [static] |
Definition at line 147 of file page-writeback.c.
| unsigned long vm_dirty_bytes |
Definition at line 92 of file page-writeback.c.
| int vm_dirty_ratio = 10 |
Definition at line 86 of file page-writeback.c.
Definition at line 81 of file page-writeback.c.
1.5.6