linux/fs/minix/file.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 *  linux/fs/minix/file.c
   4 *
   5 *  Copyright (C) 1991, 1992 Linus Torvalds
   6 *
   7 *  minix regular file handling primitives
   8 */
   9
  10#include "minix.h"
  11
  12/*
  13 * We have mostly NULLs here: the current defaults are OK for
  14 * the minix filesystem.
  15 */
  16const struct file_operations minix_file_operations = {
  17        .llseek         = generic_file_llseek,
  18        .read_iter      = generic_file_read_iter,
  19        .write_iter     = generic_file_write_iter,
  20        .mmap           = generic_file_mmap,
  21        .fsync          = generic_file_fsync,
  22        .splice_read    = generic_file_splice_read,
  23};
  24
  25static int minix_setattr(struct user_namespace *mnt_userns,
  26                         struct dentry *dentry, struct iattr *attr)
  27{
  28        struct inode *inode = d_inode(dentry);
  29        int error;
  30
  31        error = setattr_prepare(&init_user_ns, dentry, 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 = inode_newsize_ok(inode, attr->ia_size);
  38                if (error)
  39                        return error;
  40
  41                truncate_setsize(inode, attr->ia_size);
  42                minix_truncate(inode);
  43        }
  44
  45        setattr_copy(&init_user_ns, inode, attr);
  46        mark_inode_dirty(inode);
  47        return 0;
  48}
  49
  50const struct inode_operations minix_file_inode_operations = {
  51        .setattr        = minix_setattr,
  52        .getattr        = minix_getattr,
  53};
  54