函数逻辑报告 |
Source Code:mm\truncate.c |
Create Date:2022-07-27 15:38:34 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:validate_inode_pages2_range - remove range of pages from an address_space*@mapping: the address_space*@start: the page offset 'from' which to invalidate*@end: the page offset 'to' which to invalidate (inclusive)* Any pages which are found to be mapped
函数原型:int invalidate_inode_pages2_range(struct address_space *mapping, unsigned long start, unsigned long end)
返回类型:int
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct address_space * | mapping | |
| unsigned long | start | |
| unsigned long | end |
| 691 | ret等于0 |
| 692 | ret2等于0 |
| 693 | did_range_unmap等于0 |
| 695 | 如果nrpages恒等于0且nrexceptional恒等于0则转到:out |
| 698 | pagevec_init( & pvec) |
| 703 | 以i小于pagevec_count( & pvec)循环 |
| 712 | 如果非Invalidate exceptional entry if clean. This handles exceptional entries for* invalidate_inode_pages2() so for DAX it evicts only clean entries.则ret等于负EBUSY |
| 715 | 继续下一循环 |
| 719 | WARN_ON(Get index of the page with in radix-tree* (TODO: remove once hugetlb pages will have ->index in PAGE_SIZE) != index) |
| 720 | 如果 See page-flags.h for PAGE_MAPPING_FLAGS 不等于mapping则 |
| 725 | 如果page_mapped(page)则 |
| 726 | 如果非did_range_unmap则 |
| 730 | unmap_mapping_pages(mapping, index, (1 + end - index), false) |
| 732 | did_range_unmap等于1 |
| 733 | 否则 |
| 737 | unmap_mapping_pages(mapping, index, 1, false) |
| 741 | BUG_ON(page_mapped(page)) |
| 742 | ret2等于do_launder_page(mapping, page) |
| 743 | 如果ret2恒等于0则 |
| 752 | pagevec_release( & pvec) |
| 753 | cond_resched() |
| 754 | index自加 |
| 763 | 如果dax_mapping(mapping)则 |
| 764 | unmap_mapping_pages(mapping, start, end - start + 1, false) |
| 766 | out : |
| 768 | 返回:ret |
| 名称 | 描述 |
|---|---|
| generic_file_direct_write | |
| invalidate_inode_pages2 | validate_inode_pages2 - remove all pages from an address_space*@mapping: the address_space* Any pages which are found to be mapped into pagetables are unmapped prior to* invalidation.* Return: -EBUSY if any pages could not be invalidated. |
| dio_complete | dio_complete() - called when all DIO BIO I/O has been completed* This drops i_dio_count, lets interested parties know that a DIO operation* has completed, and calculates the resulting return code for the operation |
| dax_iomap_actor | |
| iomap_dio_complete | |
| iomap_dio_rw | map_dio_rw() always completes O_[D]SYNC writes regardless of whether the IO* is being issued as AIO or not. This allows us to optimise pure data writes* to use REQ_FUA rather than requiring generic_write_sync() to issue a* REQ_FLUSH post write |
| blkdev_fallocate |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |