LINUX.ORG.RU

Объясните механизм работы работы dentry- и inode кэшей


0

1

Насколько я знаю, в виртуальной файловой системе unix есть dentry и inode кэши. Не совсем понятен механизм их работы: 1)Какие dentrys и inod'ы находяться в кэше сразу после загрузки системы? Насколько я понял, в кэш попадает dentrys корневого каталога, т.е. номера файлов каталогов /usr, /bin и т.д. и их inod'ы? 2)Каков алгоритм обработки системного вызова open?


Каков алгоритм обработки системного вызова open?

сорцы есть жеж, ну:

long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
{
        struct open_flags op;
        int lookup = build_open_flags(flags, mode, &op);
        char *tmp = getname(filename);
        int fd = PTR_ERR(tmp);

        if (!IS_ERR(tmp)) {
                fd = get_unused_fd_flags(flags);
                if (fd >= 0) {
                        struct file *f = do_filp_open(dfd, tmp, &op, lookup);
                        if (IS_ERR(f)) {
                                put_unused_fd(fd);
                                fd = PTR_ERR(f);
                        } else {
                                fsnotify_open(f);
                                fd_install(fd, f);
                        }
                }
                putname(tmp);
        }
        return fd;
}

SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode)
{
        long ret;

        if (force_o_largefile())
                flags |= O_LARGEFILE;

        ret = do_sys_open(AT_FDCWD, filename, flags, mode);
        /* avoid REGPARM breakage on x86: */
        asmlinkage_protect(3, ret, filename, flags, mode);
        return ret;
}

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.