   

       ,    inode_ope-
rations,      ,    -
  VFS    .    , -
        .

i->i op->truncate(i)

  i       .
     i   trancate (),  -
   ,       i.
 inode_operations    <linux/fs . h>,  
.

struct inode operations (

int (*create) (struct inode *, struct dentry *,int);

struct dentry * (*lookup) (struct inode *, struct dentry *);

int (*link) (struct dentry *, struct inode *, struct dentry *);

int (*unlink) (struct inode *, struct dentry *) ;

int (*symlink) (struct inode *, struct dentry *, const char *);

int (*mkdir) (struct inode *, struct dentry *, int) ;

int (*rmdir) (struct inode *, struct dentry *) ;

int (*mknod) (struct inode *, struct dentry *, int, dev_t) ;

int (*rename) (struct inode *, struct dentry *,
struct inode *, struct dentry *);

int (*readlink) (struct dentry *, char *, int);

int (*follow_link) (struct dentry *, struct nameidata *);

int (*put_link) (struct dentry *, struct nameidata *) ;

void (*truncate) (struct inode *);

int (*permission) (struct inode *, int) ;

int (*setattr) (struct dentry *, struct iattr *) ;

int (*getattr) (struct vfsmount *, struct dentry *, struct kstat *);

int (*setxattr) (struct dentry *, const char *,
const void *, size t, int) ;

ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t) ;

ssize_t (*listxattr) (struct dentry *, char *, size_t);

int (*removexattr) (struct dentry *, const char *);

};

    .

 int create(struct inode *dir, struct dentry *dentry, int mode)
    VFS    creat () 
open ()     ,    -
  (mode)       (dentry).

 struct dentry * lookup(struct inode *dir, struct dentry *dentry)
        .
     ,   -
   .

276  12