linux/fs/minix/file.c
<<
>>
Prefs
   1/*
   2 *  linux/fs/minix/file.c
   3 *
   4 *  Copyright (C) 1991, 1992 Linus Torvalds
   5 *
   6 *  minix regular file handling primitives
   7 */
   8
   9#include <linux/buffer_head.h>          /* for fsync_inode_buffers() */
  10#include "minix.h"
  11
  12/*
  13 * We have mostly NULLs here: the current defaults are OK for
  14 * the minix filesystem.
  15 */
  16int minix_sync_file(struct file *, struct dentry *, int);
  17
  18const struct file_operations minix_file_operations = {
  19        .llseek         = generic_file_llseek,
  20        .read           = do_sync_read,
  21        .aio_read       = generic_file_aio_read,
  22        .write          = do_sync_write,
  23        .aio_write      = generic_file_aio_write,
  24        .mmap           = generic_file_mmap,
  25        .fsync          = minix_sync_file,
  26        .splice_read    = generic_file_splice_read,
  27};
  28
  29const struct inode_operations minix_file_inode_operations = {
  30        .truncate       = minix_truncate,
  31        .getattr        = minix_getattr,
  32};
  33
  34int minix_sync_file(struct file * file, struct dentry *dentry, int datasync)
  35{
  36        struct inode *inode = dentry->d_inode;
  37        int err;
  38
  39        err = sync_mapping_buffers(inode->i_mapping);
  40        if (!(inode->i_state & I_DIRTY))
  41                return err;
  42        if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
  43                return err;
  44        
  45        err |= minix_sync_inode(inode);
  46        return err ? -EIO : 0;
  47}
  48