Remove last traces of ->sync_page
Commit 7eaceaccab removed ->sync_page, but a few mentions of it still
existed in documentation and comments,
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
pull/371/head
parent
d4c91a8f7e
commit
f4e6d844bd
|
|
@ -1024,8 +1024,7 @@ could be on demand. For example wait_on_buffer sets the unplugging going
|
||||||
through sync_buffer() running blk_run_address_space(mapping). Or the caller
|
through sync_buffer() running blk_run_address_space(mapping). Or the caller
|
||||||
can do it explicity through blk_unplug(bdev). So in the read case,
|
can do it explicity through blk_unplug(bdev). So in the read case,
|
||||||
the queue gets explicitly unplugged as part of waiting for completion on that
|
the queue gets explicitly unplugged as part of waiting for completion on that
|
||||||
buffer. For page driven IO, the address space ->sync_page() takes care of
|
buffer.
|
||||||
doing the blk_run_address_space().
|
|
||||||
|
|
||||||
Aside:
|
Aside:
|
||||||
This is kind of controversial territory, as it's not clear if plugging is
|
This is kind of controversial territory, as it's not clear if plugging is
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,6 @@ unlocks and drops the reference.
|
||||||
prototypes:
|
prototypes:
|
||||||
int (*writepage)(struct page *page, struct writeback_control *wbc);
|
int (*writepage)(struct page *page, struct writeback_control *wbc);
|
||||||
int (*readpage)(struct file *, struct page *);
|
int (*readpage)(struct file *, struct page *);
|
||||||
int (*sync_page)(struct page *);
|
|
||||||
int (*writepages)(struct address_space *, struct writeback_control *);
|
int (*writepages)(struct address_space *, struct writeback_control *);
|
||||||
int (*set_page_dirty)(struct page *page);
|
int (*set_page_dirty)(struct page *page);
|
||||||
int (*readpages)(struct file *filp, struct address_space *mapping,
|
int (*readpages)(struct file *filp, struct address_space *mapping,
|
||||||
|
|
@ -208,7 +207,6 @@ locking rules:
|
||||||
PageLocked(page) i_mutex
|
PageLocked(page) i_mutex
|
||||||
writepage: yes, unlocks (see below)
|
writepage: yes, unlocks (see below)
|
||||||
readpage: yes, unlocks
|
readpage: yes, unlocks
|
||||||
sync_page: maybe
|
|
||||||
writepages:
|
writepages:
|
||||||
set_page_dirty no
|
set_page_dirty no
|
||||||
readpages:
|
readpages:
|
||||||
|
|
@ -226,8 +224,8 @@ error_remove_page: yes
|
||||||
swap_activate: no
|
swap_activate: no
|
||||||
swap_deactivate: no
|
swap_deactivate: no
|
||||||
|
|
||||||
->write_begin(), ->write_end(), ->sync_page() and ->readpage()
|
->write_begin(), ->write_end() and ->readpage() may be called from
|
||||||
may be called from the request handler (/dev/loop).
|
the request handler (/dev/loop).
|
||||||
|
|
||||||
->readpage() unlocks the page, either synchronously or via I/O
|
->readpage() unlocks the page, either synchronously or via I/O
|
||||||
completion.
|
completion.
|
||||||
|
|
@ -283,11 +281,6 @@ will leave the page itself marked clean but it will be tagged as dirty in the
|
||||||
radix tree. This incoherency can lead to all sorts of hard-to-debug problems
|
radix tree. This incoherency can lead to all sorts of hard-to-debug problems
|
||||||
in the filesystem like having dirty inodes at umount and losing written data.
|
in the filesystem like having dirty inodes at umount and losing written data.
|
||||||
|
|
||||||
->sync_page() locking rules are not well-defined - usually it is called
|
|
||||||
with lock on page, but that is not guaranteed. Considering the currently
|
|
||||||
existing instances of this method ->sync_page() itself doesn't look
|
|
||||||
well-defined...
|
|
||||||
|
|
||||||
->writepages() is used for periodic writeback and for syscall-initiated
|
->writepages() is used for periodic writeback and for syscall-initiated
|
||||||
sync operations. The address_space should start I/O against at least
|
sync operations. The address_space should start I/O against at least
|
||||||
*nr_to_write pages. *nr_to_write must be decremented for each page which is
|
*nr_to_write pages. *nr_to_write must be decremented for each page which is
|
||||||
|
|
|
||||||
|
|
@ -534,9 +534,7 @@ __sync_single_inode) to check if ->writepages has been successful in
|
||||||
writing out the whole address_space.
|
writing out the whole address_space.
|
||||||
|
|
||||||
The Writeback tag is used by filemap*wait* and sync_page* functions,
|
The Writeback tag is used by filemap*wait* and sync_page* functions,
|
||||||
via filemap_fdatawait_range, to wait for all writeback to
|
via filemap_fdatawait_range, to wait for all writeback to complete.
|
||||||
complete. While waiting ->sync_page (if defined) will be called on
|
|
||||||
each page that is found to require writeback.
|
|
||||||
|
|
||||||
An address_space handler may attach extra information to a page,
|
An address_space handler may attach extra information to a page,
|
||||||
typically using the 'private' field in the 'struct page'. If such
|
typically using the 'private' field in the 'struct page'. If such
|
||||||
|
|
@ -554,8 +552,8 @@ address_space has finer control of write sizes.
|
||||||
|
|
||||||
The read process essentially only requires 'readpage'. The write
|
The read process essentially only requires 'readpage'. The write
|
||||||
process is more complicated and uses write_begin/write_end or
|
process is more complicated and uses write_begin/write_end or
|
||||||
set_page_dirty to write data into the address_space, and writepage,
|
set_page_dirty to write data into the address_space, and writepage
|
||||||
sync_page, and writepages to writeback data to storage.
|
and writepages to writeback data to storage.
|
||||||
|
|
||||||
Adding and removing pages to/from an address_space is protected by the
|
Adding and removing pages to/from an address_space is protected by the
|
||||||
inode's i_mutex.
|
inode's i_mutex.
|
||||||
|
|
|
||||||
|
|
@ -361,7 +361,6 @@ static int zisofs_readpage(struct file *file, struct page *page)
|
||||||
|
|
||||||
const struct address_space_operations zisofs_aops = {
|
const struct address_space_operations zisofs_aops = {
|
||||||
.readpage = zisofs_readpage,
|
.readpage = zisofs_readpage,
|
||||||
/* No sync_page operation supported? */
|
|
||||||
/* No bmap operation supported */
|
/* No bmap operation supported */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1854,7 +1854,7 @@ int ntfs_read_inode_mount(struct inode *vi)
|
||||||
/* Need this to sanity check attribute list references to $MFT. */
|
/* Need this to sanity check attribute list references to $MFT. */
|
||||||
vi->i_generation = ni->seq_no = le16_to_cpu(m->sequence_number);
|
vi->i_generation = ni->seq_no = le16_to_cpu(m->sequence_number);
|
||||||
|
|
||||||
/* Provides readpage() and sync_page() for map_mft_record(). */
|
/* Provides readpage() for map_mft_record(). */
|
||||||
vi->i_mapping->a_ops = &ntfs_mst_aops;
|
vi->i_mapping->a_ops = &ntfs_mst_aops;
|
||||||
|
|
||||||
ctx = ntfs_attr_get_search_ctx(ni, m);
|
ctx = ntfs_attr_get_search_ctx(ni, m);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue