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 "minix.h"
  10
  11/*
  12 * We have mostly NULLs here: the current defaults are OK for
  13 * the minix filesystem.
  14 */
  15const struct file_operations minix_file_operations = {
  16        .llseek         = generic_file_llseek,
  17        .read           = do_sync_read,
  18        .aio_read       = generic_file_aio_read,
  19        .write          = do_sync_write,
  20        .aio_write      = generic_file_aio_write,
  21        .mmap           = generic_file_mmap,
  22        .fsync          = generic_file_fsync,
  23        .splice_read    = generic_file_splice_read,
  24};
  25
  26static int minix_setattr(struct dentry *dentry, struct iattr *attr)
  27{
  28        struct inode *inode = dentry->d_inode;
  29        int error;
  30
  31        error = inode_change_ok(inode, attr);
  32        if (error)
  33                return error;
  34
  35        if ((attr->ia_valid & ATTR_SIZE) &&
  36            attr->ia_size != i_size_read(inode)) {
  37                error = vmtruncate(inode, attr->ia_size);
  38                if (error)
  39                        return error;
  40        }
  41
  42        setattr_copy(inode, attr);
  43        mark_inode_dirty(inode);
  44        return 0;
  45}
  46
  47const struct inode_operations minix_file_inode_operations = {
  48        .truncate       = minix_truncate,
  49        .setattr        = minix_setattr,
  50        .getattr        = minix_getattr,
  51};
  52