Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

106199
1107
135834


[리눅스커널] 가상파일시스템: struct dentry 구조체 분석 13. 가상 파일 시스템

덴트리에 대한 세부 속성은 struct dentry 구조체에서 확인할 수 있습니다.
먼저 struct dentry 구조체 선언부를 볼까요?
[https://elixir.bootlin.com/linux/v4.19.30/source/source/include/linux/dcache.h]
struct dentry {
/* RCU lookup touched fields */
unsigned int d_flags; /* protected by d_lock */
seqcount_t d_seq; /* per dentry seqlock */
struct hlist_bl_node d_hash; /* lookup hash list */
struct dentry *d_parent; /* parent directory */
struct qstr d_name;
struct inode *d_inode; /* Where the name belongs to - NULL is
* negative */
unsigned char d_iname[DNAME_INLINE_LEN]; /* small names */

/* Ref lookup also touches following */
struct lockref d_lockref; /* per-dentry lock and refcount */
const struct dentry_operations *d_op;
struct super_block *d_sb; /* The root of the dentry tree */
unsigned long d_time; /* used by d_revalidate */
void *d_fsdata; /* fs-specific data */

union {
struct list_head d_lru; /* LRU list */
wait_queue_head_t *d_wait; /* in-lookup ones only */
};
struct list_head d_child; /* child of parent list */
struct list_head d_subdirs; /* our children */
/*
* d_alias and d_rcu can share memory
*/
union {
struct hlist_node d_alias; /* inode alias list */
struct hlist_bl_node d_in_lookup_hash; /* only for in-lookup ones */
struct rcu_head d_rcu;
} d_u;
} __randomize_layout;

struct dentry 구조체 필드 중에 중요한 속성을 알아 보겠습니다. 다음 테이블 목록에서 struct dentry 구조체 중 주요 필드를 볼 수 있습니다.
타입 필드 설명
unsigned int d_flags 덴트리 상태 플래그
struct dentry *d_parent 부모 디렉터리의 dentry 객체
struct qstr d_name 덴트리 이름
struct inode *d_inode 덴트리에 해당하는 아이노드
unsigned char d_iname[36] 덴트리 약칭 이름
const struct dentry_operations *d_op 덴트리 오퍼레이션 함수 테이블
struct super_block *d_sb 파일의 수퍼 블록 객체
void *d_fsdata 파일시스템에 따른 포인터 매개 변수
struct list_head d_child 디렉터리에 대해서, 동일한 부모 디렉터리 내 
디렉터리 dentry 리스트를 가리키는 포인터
struct list_head d_subdirs 디렉터리에 대해서, 하위 디렉터리 dentry들의 리스트 헤드

덴트리도 다른 객체와 마찬가지로 const struct dentry_operations 타입인 d_op 필드로 덴트리 함수 오퍼레이션을 지원합니다. 덴트리 함수 오퍼레이션은 세부 동작은 난이도가 너무 높아 이 책에서 다루지는 않습니다. 

"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!" 

Thanks,
Austin Kim(austindh.kim@gmail.com)


Reference(가상 파일시스템)

가상 파일시스템 소개
파일 객체
파일 객체 함수 오퍼레이션 동작
프로세스는 파일객체 자료구조를 어떻게 관리할까?
슈퍼블록 객체
아이노드 객체
덴트리 객체
가상 파일시스템 디버깅



핑백

덧글

댓글 입력 영역