'\" t .\" Title: pagecache_isize_extended .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: January 2017 .\" Manual: Memory Management in Linux .\" Source: Kernel Hackers Manual 4.8.15 .\" Language: English .\" .TH "PAGECACHE_ISIZE_EXTE" "9" "January 2017" "Kernel Hackers Manual 4\&.8\&." "Memory Management in Linux" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" pagecache_isize_extended \- update pagecache after extension of i_size .SH "SYNOPSIS" .HP \w'void\ pagecache_isize_extended('u .BI "void pagecache_isize_extended(struct\ inode\ *\ " "inode" ", loff_t\ " "from" ", loff_t\ " "to" ");" .SH "ARGUMENTS" .PP \fIinode\fR .RS 4 inode for which i_size was extended .RE .PP \fIfrom\fR .RS 4 original inode size .RE .PP \fIto\fR .RS 4 new inode size .RE .SH "DESCRIPTION" .PP Handle extension of inode size either caused by extending truncate or by write starting after current i_size\&. We mark the page straddling current i_size RO so that \fBpage_mkwrite\fR is called on the nearest write access to the page\&. This way filesystem can be sure that \fBpage_mkwrite\fR is called on the page before user writes to the page via mmap after the i_size has been changed\&. .PP The function must be called after i_size is updated so that page fault coming after we unlock the page will already see the new i_size\&. The function must be called while we still hold i_mutex \- this not only makes sure i_size is stable but also that userspace cannot observe new i_size value before we are prepared to store mmap writes at new inode size\&. .SH "COPYRIGHT" .br