brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · c645f60 Raw
60 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 *  linux/fs/sysv/file.c4 *5 *  minix/file.c6 *  Copyright (C) 1991, 1992  Linus Torvalds7 *8 *  coh/file.c9 *  Copyright (C) 1993  Pascal Haible, Bruno Haible10 *11 *  sysv/file.c12 *  Copyright (C) 1993  Bruno Haible13 *14 *  SystemV/Coherent regular file handling primitives15 */16 17#include "sysv.h"18 19/*20 * We have mostly NULLs here: the current defaults are OK for21 * the coh filesystem.22 */23const 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	= filemap_splice_read,30};31 32static int sysv_setattr(struct mnt_idmap *idmap,33			struct dentry *dentry, struct iattr *attr)34{35	struct inode *inode = d_inode(dentry);36	int error;37 38	error = setattr_prepare(&nop_mnt_idmap, dentry, 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 = inode_newsize_ok(inode, attr->ia_size);45		if (error)46			return error;47		truncate_setsize(inode, attr->ia_size);48		sysv_truncate(inode);49	}50 51	setattr_copy(&nop_mnt_idmap, inode, attr);52	mark_inode_dirty(inode);53	return 0;54}55 56const struct inode_operations sysv_file_inode_operations = {57	.setattr	= sysv_setattr,58	.getattr	= sysv_getattr,59};60