root/fs/sysv/file.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. sysv_setattr

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  *  linux/fs/sysv/file.c
   4  *
   5  *  minix/file.c
   6  *  Copyright (C) 1991, 1992  Linus Torvalds
   7  *
   8  *  coh/file.c
   9  *  Copyright (C) 1993  Pascal Haible, Bruno Haible
  10  *
  11  *  sysv/file.c
  12  *  Copyright (C) 1993  Bruno Haible
  13  *
  14  *  SystemV/Coherent regular file handling primitives
  15  */
  16 
  17 #include "sysv.h"
  18 
  19 /*
  20  * We have mostly NULLs here: the current defaults are OK for
  21  * the coh filesystem.
  22  */
  23 const struct file_operations sysv_file_operations = {
  24         .llseek         = generic_file_llseek,
  25         .read_iter      = generic_file_read_iter,
  26         .write_iter     = generic_file_write_iter,
  27         .mmap           = generic_file_mmap,
  28         .fsync          = generic_file_fsync,
  29         .splice_read    = generic_file_splice_read,
  30 };
  31 
  32 static int sysv_setattr(struct dentry *dentry, struct iattr *attr)
  33 {
  34         struct inode *inode = d_inode(dentry);
  35         int error;
  36 
  37         error = setattr_prepare(dentry, attr);
  38         if (error)
  39                 return error;
  40 
  41         if ((attr->ia_valid & ATTR_SIZE) &&
  42             attr->ia_size != i_size_read(inode)) {
  43                 error = inode_newsize_ok(inode, attr->ia_size);
  44                 if (error)
  45                         return error;
  46                 truncate_setsize(inode, attr->ia_size);
  47                 sysv_truncate(inode);
  48         }
  49 
  50         setattr_copy(inode, attr);
  51         mark_inode_dirty(inode);
  52         return 0;
  53 }
  54 
  55 const struct inode_operations sysv_file_inode_operations = {
  56         .setattr        = sysv_setattr,
  57         .getattr        = sysv_getattr,
  58 };

/* [<][>][^][v][top][bottom][index][help] */