extern struct file *do_file_open_root(struct dentry *, struct vfsmount *,
                const char *, const struct open_flags *);
  
- extern int open_check_o_direct(struct file *f);
 +long do_sys_ftruncate(unsigned int fd, loff_t length, int small);
 +long do_faccessat(int dfd, const char __user *filename, int mode);
 +int do_fchmodat(int dfd, const char __user *filename, umode_t mode);
 +int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
 +              int flag);
 +
  extern int vfs_open(const struct path *, struct file *, const struct cred *);
  extern struct file *filp_clone_open(struct file *);
  
 
        return error;
  }
  
- int open_check_o_direct(struct file *f)
- {
-       /* NB: we're sure to have correct a_ops only after f_op->open */
-       if (f->f_flags & O_DIRECT) {
-               if (!f->f_mapping->a_ops || !f->f_mapping->a_ops->direct_IO)
-                       return -EINVAL;
-       }
-       return 0;
- }
- 
 +SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)
 +{
 +      return ksys_fchown(fd, user, group);
 +}
 +
  static int do_dentry_open(struct file *f,
                          struct inode *inode,
                          int (*open)(struct inode *, struct file *),