函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |