Commit d3a9262e authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar

fs: Provide empty .set_page_dirty() aop for anon inodes

.set_page_dirty() is one of those a_ops that defaults to the
buffer implementation when not set. Therefore provide a dummy
function to make it do nothing.

(Uncovered by perfcounters fd's which can now be writable-mmap-ed.)
Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Davide Libenzi <davidel@xmailserver.org>
LKML-Reference: <new-submission>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent e24a72c4
...@@ -52,6 +52,19 @@ static const struct dentry_operations anon_inodefs_dentry_operations = { ...@@ -52,6 +52,19 @@ static const struct dentry_operations anon_inodefs_dentry_operations = {
.d_delete = anon_inodefs_delete_dentry, .d_delete = anon_inodefs_delete_dentry,
}; };
/*
* nop .set_page_dirty method so that people can use .page_mkwrite on
* anon inodes.
*/
static int anon_set_page_dirty(struct page *page)
{
return 0;
};
static const struct address_space_operations anon_aops = {
.set_page_dirty = anon_set_page_dirty,
};
/** /**
* anon_inode_getfd - creates a new file instance by hooking it up to an * anon_inode_getfd - creates a new file instance by hooking it up to an
* anonymous inode, and a dentry that describe the "class" * anonymous inode, and a dentry that describe the "class"
...@@ -151,6 +164,8 @@ static struct inode *anon_inode_mkinode(void) ...@@ -151,6 +164,8 @@ static struct inode *anon_inode_mkinode(void)
inode->i_fop = &anon_inode_fops; inode->i_fop = &anon_inode_fops;
inode->i_mapping->a_ops = &anon_aops;
/* /*
* Mark the inode dirty from the very beginning, * Mark the inode dirty from the very beginning,
* that way it will never be moved to the dirty * that way it will never be moved to the dirty
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment