函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:fs\buffer.c Create Date:2022-07-29 10:45:22
Last Modify:2020-03-18 10:38:29 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:nobh_write_end

函数原型:int nobh_write_end(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, struct page *page, void *fsdata)

返回类型:int

参数:

类型参数名称
struct file *file
struct address_space *mapping
loff_tpos
unsignedlen
unsignedcopied
struct page *page
void *fsdata
2719  inode等于host
2720  head等于fsdata
2722  BUG_ON(fsdata != NULL && page_has_buffers(page))
2724  如果此条件成立可能性小(为编译器优化)(copied < len)且headAttach the singly-linked list of buffers created by nobh_write_begin, to* the page (converting it to circular linked list and taking care of page* dirty races).
2726  如果page_has_buffers(page)则返回:generic_write_end(file, mapping, pos, len, copied, page, fsdata)
2730  SetPageUptodate(page)
2731  Dirty a page
2732  如果poscopied大于i_size
2733  NOTE: unlike i_size_read(), i_size_write() does need locking around it* (normally i_mutex), otherwise on 32bit/SMP an update of i_size_seqcount* can be lost, resulting in subsequent i_size_read() calls spinning forever.
2734  mark_inode_dirty(inode)
2737  lock_page - unlock a locked page*@page: the page* Unlocks the page and wakes up sleepers in ___wait_on_page_locked().* Also wakes sleepers in wait_on_page_writeback() because the wakeup* mechanism between PageLocked pages and PageWriteback pages is shared.
2738  Perform a free_page(), also freeing any swap cache associated with* this page if it is the last user of the page.
2740 head循环
2741  bh等于head
2742  head等于 circular list of page's buffers
2743  free_buffer_head(bh)
2746  返回:copied