VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
b24413180f560 (Greg Kroah-Hartman 2017-11-01 15:07:57 +0100  1) // SPDX-License-Identifier: GPL-2.0
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  2) /*
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  3)  *  linux/fs/sysv/file.c
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  4)  *
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  5)  *  minix/file.c
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  6)  *  Copyright (C) 1991, 1992  Linus Torvalds
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  7)  *
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  8)  *  coh/file.c
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700  9)  *  Copyright (C) 1993  Pascal Haible, Bruno Haible
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 10)  *
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 11)  *  sysv/file.c
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 12)  *  Copyright (C) 1993  Bruno Haible
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 13)  *
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 14)  *  SystemV/Coherent regular file handling primitives
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 15)  */
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 16) 
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 17) #include "sysv.h"
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 18) 
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 19) /*
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 20)  * We have mostly NULLs here: the current defaults are OK for
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 21)  * the coh filesystem.
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 22)  */
4b6f5d20b04dc (Arjan van de Ven   2006-03-28 01:56:42 -0800 23) const struct file_operations sysv_file_operations = {
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 24) 	.llseek		= generic_file_llseek,
aad4f8bb42af0 (Al Viro            2014-04-02 14:33:16 -0400 25) 	.read_iter	= generic_file_read_iter,
8174202b34c30 (Al Viro            2014-04-03 03:17:43 -0400 26) 	.write_iter	= generic_file_write_iter,
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 27) 	.mmap		= generic_file_mmap,
1b061d9247f71 (Christoph Hellwig  2010-05-26 17:53:41 +0200 28) 	.fsync		= generic_file_fsync,
5ffc4ef45b3b0 (Jens Axboe         2007-06-01 11:49:19 +0200 29) 	.splice_read	= generic_file_splice_read,
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 30) };
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 31) 
549c7297717c3 (Christian Brauner  2021-01-21 14:19:43 +0100 32) static int sysv_setattr(struct user_namespace *mnt_userns,
549c7297717c3 (Christian Brauner  2021-01-21 14:19:43 +0100 33) 			struct dentry *dentry, struct iattr *attr)
d39aae9ec447d (Christoph Hellwig  2010-06-04 11:29:59 +0200 34) {
2b0143b5c986b (David Howells      2015-03-17 22:25:59 +0000 35) 	struct inode *inode = d_inode(dentry);
d39aae9ec447d (Christoph Hellwig  2010-06-04 11:29:59 +0200 36) 	int error;
d39aae9ec447d (Christoph Hellwig  2010-06-04 11:29:59 +0200 37) 
2f221d6f7b881 (Christian Brauner  2021-01-21 14:19:26 +0100 38) 	error = setattr_prepare(&init_user_ns, dentry, attr);
d39aae9ec447d (Christoph Hellwig  2010-06-04 11:29:59 +0200 39) 	if (error)
d39aae9ec447d (Christoph Hellwig  2010-06-04 11:29:59 +0200 40) 		return error;
1025774ce411f (Christoph Hellwig  2010-06-04 11:30:02 +0200 41) 
1025774ce411f (Christoph Hellwig  2010-06-04 11:30:02 +0200 42) 	if ((attr->ia_valid & ATTR_SIZE) &&
1025774ce411f (Christoph Hellwig  2010-06-04 11:30:02 +0200 43) 	    attr->ia_size != i_size_read(inode)) {
fa4d62ae17c74 (Marco Stornelli    2012-12-15 11:45:58 +0100 44) 		error = inode_newsize_ok(inode, attr->ia_size);
1025774ce411f (Christoph Hellwig  2010-06-04 11:30:02 +0200 45) 		if (error)
1025774ce411f (Christoph Hellwig  2010-06-04 11:30:02 +0200 46) 			return error;
fa4d62ae17c74 (Marco Stornelli    2012-12-15 11:45:58 +0100 47) 		truncate_setsize(inode, attr->ia_size);
fa4d62ae17c74 (Marco Stornelli    2012-12-15 11:45:58 +0100 48) 		sysv_truncate(inode);
1025774ce411f (Christoph Hellwig  2010-06-04 11:30:02 +0200 49) 	}
1025774ce411f (Christoph Hellwig  2010-06-04 11:30:02 +0200 50) 
2f221d6f7b881 (Christian Brauner  2021-01-21 14:19:26 +0100 51) 	setattr_copy(&init_user_ns, inode, attr);
1025774ce411f (Christoph Hellwig  2010-06-04 11:30:02 +0200 52) 	mark_inode_dirty(inode);
1025774ce411f (Christoph Hellwig  2010-06-04 11:30:02 +0200 53) 	return 0;
d39aae9ec447d (Christoph Hellwig  2010-06-04 11:29:59 +0200 54) }
d39aae9ec447d (Christoph Hellwig  2010-06-04 11:29:59 +0200 55) 
c5ef1c42c51b1 (Arjan van de Ven   2007-02-12 00:55:40 -0800 56) const struct inode_operations sysv_file_inode_operations = {
d39aae9ec447d (Christoph Hellwig  2010-06-04 11:29:59 +0200 57) 	.setattr	= sysv_setattr,
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 58) 	.getattr	= sysv_getattr,
^1da177e4c3f4 (Linus Torvalds     2005-04-16 15:20:36 -0700 59) };