linux/fs/sysv/file.c
Arjan van de Ven 4b6f5d20b0 [PATCH] Make most file operations structs in fs/ const
This is a conversion to make the various file_operations structs in fs/
const.  Basically a regexp job, with a few manual fixups

The goal is both to increase correctness (harder to accidentally write to
shared datastructures) and reducing the false sharing of cachelines with
things that get dirty in .data (while .rodata is nicely read only and thus
cache clean)

Signed-off-by: Arjan van de Ven <arjan@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-28 09:16:06 -08:00

50 lines
1.1 KiB
C

/*
* linux/fs/sysv/file.c
*
* minix/file.c
* Copyright (C) 1991, 1992 Linus Torvalds
*
* coh/file.c
* Copyright (C) 1993 Pascal Haible, Bruno Haible
*
* sysv/file.c
* Copyright (C) 1993 Bruno Haible
*
* SystemV/Coherent regular file handling primitives
*/
#include "sysv.h"
/*
* We have mostly NULLs here: the current defaults are OK for
* the coh filesystem.
*/
const struct file_operations sysv_file_operations = {
.llseek = generic_file_llseek,
.read = generic_file_read,
.write = generic_file_write,
.mmap = generic_file_mmap,
.fsync = sysv_sync_file,
.sendfile = generic_file_sendfile,
};
struct inode_operations sysv_file_inode_operations = {
.truncate = sysv_truncate,
.getattr = sysv_getattr,
};
int sysv_sync_file(struct file * file, struct dentry *dentry, int datasync)
{
struct inode *inode = dentry->d_inode;
int err;
err = sync_mapping_buffers(inode->i_mapping);
if (!(inode->i_state & I_DIRTY))
return err;
if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
return err;
err |= sysv_sync_inode(inode);
return err ? -EIO : 0;
}