# 파일 이름과 열린 파일을 관리할 저장소를 준비합니다

v6.18.37 / fs/dcache.c

경로 문자열, dentry, inode, 열린 파일, mount는 서로 다른 역할의 객체입니다. VFS 초기화는 이들을 위한 저장소와 관리 체계를 준비합니다. 저장소를 만들었다고 디스크의 모든 파일 내용을 읽어 오는 것은 아닙니다.

## vfs_caches_init

```c

void __init vfs_caches_init(void)
{
	names_cachep = kmem_cache_create_usercopy("names_cache", PATH_MAX, 0,
			SLAB_HWCACHE_ALIGN|SLAB_PANIC, 0, PATH_MAX, NULL);

	dcache_init();
	inode_init();
	files_init();
	files_maxfiles_init();
	mnt_init();
	bdev_cache_init();
	chrdev_init();
}

```

### 3264행

```c

void __init vfs_caches_init(void)

```

VFS가 경로 이름, inode, 열린 파일과 mount 정보를 관리할 저장소를 초기화합니다. 여러 파일 시스템이 공유할 공통 기반을 만든 뒤 실제 파일 시스템과 장치 사용으로 이어집니다.

### 3266행

```c

	names_cachep = kmem_cache_create_usercopy("names_cache", PATH_MAX, 0,

```

정해진 크기의 객체 캐시를 만들면서 사용자와 복사할 수 있는 바이트 범위를 제한합니다.

### 3267행

```c

			SLAB_HWCACHE_ALIGN|SLAB_PANIC, 0, PATH_MAX, NULL);

```

경로명 버퍼 캐시를 캐시라인에 맞추고 생성 실패 시 부팅을 중단하도록 지정합니다. offset 0부터 PATH_MAX바이트를 usercopy 허용 범위로 주며 객체 생성자 콜백은 없습니다. 앞줄에서 시작한 호출이나 식에 이어지는 부분이므로, 이 줄만으로 별도의 함수 호출이 생기지는 않습니다.

### 3269행

```c

	dcache_init();

```

이름을 통해 dentry를 찾고 보관할 캐시 기반을 초기화합니다.

### 3270행

```c

	inode_init();

```

파일 메타데이터 객체인 inode를 관리할 초기 상태를 준비합니다.

### 3271행

```c

	files_init();

```

열린 파일 객체 관리 기반을 초기화합니다.

### 3272행

```c

	files_maxfiles_init();

```

시스템이 사용할 열린 파일 수 제한을 초기화합니다.

### 3273행

```c

	mnt_init();

```

mount 및 초기 파일 시스템 연결 상태를 준비합니다.

### 3274행

```c

	bdev_cache_init();

```

블록 장치 객체를 관리할 캐시를 준비합니다.

### 3275행

```c

	chrdev_init();

```

문자 장치 번호와 동작 연결을 관리할 초기 상태를 준비합니다.

