This source file includes following definitions.
- ext2_ioctl
1
2
3
4
5
6
7
8
9 #include <asm/segment.h>
10
11 #include <linux/errno.h>
12 #include <linux/fs.h>
13 #include <linux/ext2_fs.h>
14 #include <linux/ioctl.h>
15 #include <linux/sched.h>
16
17 int ext2_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
18 unsigned long arg)
19 {
20 int err;
21
22 ext2_debug ("cmd = %u, arg = %lu\n", cmd, arg);
23
24 switch (cmd) {
25 case EXT2_IOC_GETFLAGS:
26 if ((err = verify_area (VERIFY_WRITE, (long *) arg, sizeof(long))))
27 return err;
28 put_fs_long (inode->u.ext2_i.i_flags, (long *) arg);
29 return 0;
30 case EXT2_IOC_SETFLAGS:
31 if ((current->euid != inode->i_uid) && !suser())
32 return -EPERM;
33 if (IS_RDONLY(inode))
34 return -EROFS;
35 inode->u.ext2_i.i_flags = get_fs_long ((long *) arg);
36 inode->i_ctime = CURRENT_TIME;
37 inode->i_dirt = 1;
38 return 0;
39 case EXT2_IOC_GETVERSION:
40 if ((err = verify_area (VERIFY_WRITE, (long *) arg, sizeof(long))))
41 return err;
42 put_fs_long (inode->u.ext2_i.i_version, (long *) arg);
43 return 0;
44 case EXT2_IOC_SETVERSION:
45 if ((current->euid != inode->i_uid) && !suser())
46 return -EPERM;
47 if (IS_RDONLY(inode))
48 return -EROFS;
49 inode->u.ext2_i.i_version = get_fs_long ((long *) arg);
50 inode->i_ctime = CURRENT_TIME;
51 inode->i_dirt = 1;
52 return 0;
53 default:
54 return -EINVAL;
55 }
56 }