| Function report | 
| Source Code: fs\buffer.c | Create Date:2022-07-28 20:14:13 | 
| Last Modify:2020-03-18 10:38:29 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:try_to_free_buffers
Proto:int try_to_free_buffers(struct page *page)
Type:int
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct page * | page | 
| 3277 | struct buffer_head * buffers_to_free = NULL | 
| 3278 | ret = 0 | 
| 3280 | BUG_ON(!PageLocked(page)) | 
| 3281 | If Only test-and-set exist for PG_writeback. The unconditional operators are* risky: they bypass page accounting. Then Return 0 | 
| 3284 | If (mapping == NULL) Then | 
| 3285 | ret = drop_buffers(page, & buffers_to_free) | 
| 3286 | Go to out | 
| 3289 | spin_lock( & private_lock) | 
| 3290 | ret = drop_buffers(page, & buffers_to_free) | 
| 3306 | If ret Then cancel_dirty_page(page) | 
| 3308 | spin_unlock( & private_lock) | 
| 3309 | out : | 
| 3310 | If buffers_to_free Then | 
| 3319 | Return ret | 
| Name | Describe | 
|---|---|
| pageout | pageout is called by shrink_page_list() for each dirty page.* Calls ->writepage(). | 
| __unmap_and_move | |
| grow_dev_page | Create the page-cache page that contains the requested block.* This is used purely for blockdev mappings. | 
| blkdev_releasepage | Try to release a page associated with block device when the system* is under memory pressure. | 
| clean_buffers | We have our BIO, so we can now mark the buffers clean. Make* sure to only clean buffers which we know we'll be writing. | 
| Source code conversion tool public plug-in interface | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |