linux/fs/sysv/file.c
<<
>>
Prefs
   1/*
   2 *  linux/fs/sysv/file.c
   3 *
   4 *  minix/file.c
   5 *  Copyright (C) 1991, 1992  Linus Torvalds
   6 *
   7 *  coh/file.c
   8 *  Copyright (C) 1993  Pascal Haible, Bruno Haible
   9 *
  10 *  sysv/file.c
  11 *  Copyright (C) 1993  Bruno Haible
  12 *
  13 *  SystemV/Coherent regular file handling primitives
  14 */
  15
  16#include "sysv.h"
  17
  18/*
  19 * We have mostly NULLs here: the current defaults are OK for
  20 * the coh filesystem.
  21 */
  22const struct file_operations sysv_file_operations = {
  23        .llseek         = generic_file_llseek,
  24        .read           = do_sync_read,
  25        .aio_read       = generic_file_aio_read,
  26        .write          = do_sync_write,
  27        .aio_write      = generic_file_aio_write,
  28        .mmap           = generic_file_mmap,
  29        .fsync          = generic_file_fsync,
  30        .splice_read    = generic_file_splice_read,
  31};
  32
  33static int sysv_setattr(struct dentry *dentry, struct iattr *attr)
  34{
  35        struct inode *inode = dentry->d_inode;
  36        int error;
  37
  38        error = inode_change_ok(inode, attr);
  39        if (error)
  40                return error;
  41
  42        if ((attr->ia_valid & ATTR_SIZE) &&
  43            attr->ia_size != i_size_read(inode)) {
  44                error = vmtruncate(inode, attr->ia_size);
  45                if (error)
  46                        return error;
  47        }
  48
  49        setattr_copy(inode, attr);
  50        mark_inode_dirty(inode);
  51        return 0;
  52}
  53
  54const struct inode_operations sysv_file_inode_operations = {
  55        .truncate       = sysv_truncate,
  56        .setattr        = sysv_setattr,
  57        .getattr        = sysv_getattr,
  58};
  59
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.