6.2.4 Inode operations

inode構造体には,inode_operations構造体が持ち,主にファイル管理をおこなう命令がある.これらの関数は通常,適切なシステムコールの実装から直接呼び出される.関数が呼び出される前にinode参照カウンタがインクリメントされるので,渡されたinodeを開放するために,関数はiput()を使わなければならないことに注意.inode操作が失敗すると,呼び出し関数側はデフォルトのアクションを実行する.しかしこれにはinode関連ではない単なるエラーの場合もあるだろう.

include/linux/fs.h

struct inode_operations {
    struct file_operations * default_file_ops;
    int (*create) (struct inode *,const char *,int,int,struct inode **);
    int (*lookup) (struct inode *,const char *,int,struct inode **);
    int (*link) (struct inode *,struct inode *,const char *,int);
    int (*unlink) (struct inode *,const char *,int);
    int (*symlink) (struct inode *,const char *,int,const char *);
    int (*mkdir) (struct inode *,const char *,int,int);
    int (*rmdir) (struct inode *,const char *,int);
    int (*mknod) (struct inode *,const char *,int,int,int);
    int (*rename) (struct inode *,const char *,int,struct inode *,const char *,int);
    int (*readlink) (struct inode *,char *,int);
    int (*follow_link) (struct inode *,struct inode *,int,int,struct inode **);
    int (*bmap) (struct inode *,int);
    void (*truncate) (struct inode *);
    int (*permission) (struct inode *, int);
    int (*smap) (struct inode *,int);
};