Lines Matching refs:dir
47 static int inherit_flags(const struct inode *dir, umode_t mode) in inherit_flags() argument
50 const struct ubifs_inode *ui = ubifs_inode(dir); in inherit_flags()
52 if (!S_ISDIR(dir->i_mode)) in inherit_flags()
76 struct inode *ubifs_new_inode(struct ubifs_info *c, struct inode *dir, in ubifs_new_inode() argument
84 if (ubifs_crypt_is_encrypted(dir)) { in ubifs_new_inode()
85 err = fscrypt_get_encryption_info(dir); in ubifs_new_inode()
91 if (!fscrypt_has_encryption_key(dir)) in ubifs_new_inode()
110 inode_init_owner(inode, dir, mode); in ubifs_new_inode()
140 ui->flags = inherit_flags(dir, mode); in ubifs_new_inode()
174 err = fscrypt_inherit_context(dir, inode, &encrypted, true); in ubifs_new_inode()
199 static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry, in ubifs_lookup() argument
206 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_lookup()
209 dbg_gen("'%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_lookup()
211 err = fscrypt_prepare_lookup(dir, dentry, &nm); in ubifs_lookup()
231 dent_key_init_hash(c, &key, dir->i_ino, nm.hash); in ubifs_lookup()
234 dent_key_init(c, &key, dir->i_ino, &nm); in ubifs_lookup()
251 inode = ubifs_iget(dir->i_sb, le64_to_cpu(dent->inum)); in ubifs_lookup()
264 if (ubifs_crypt_is_encrypted(dir) && in ubifs_lookup()
266 !fscrypt_has_permitted_context(dir, inode)) { in ubifs_lookup()
268 dir->i_ino, inode->i_ino); in ubifs_lookup()
279 static int ubifs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in ubifs_create() argument
283 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_create()
286 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_create()
296 dentry, mode, dir->i_ino); in ubifs_create()
302 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_create()
308 inode = ubifs_new_inode(c, dir, mode); in ubifs_create()
314 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_create()
319 dir->i_size += sz_change; in ubifs_create()
320 dir_ui->ui_size = dir->i_size; in ubifs_create()
321 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_create()
322 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_create()
334 dir->i_size -= sz_change; in ubifs_create()
335 dir_ui->ui_size = dir->i_size; in ubifs_create()
348 static int do_tmpfile(struct inode *dir, struct dentry *dentry, in do_tmpfile() argument
352 struct ubifs_info *c = dir->i_sb->s_fs_info; in do_tmpfile()
355 struct ubifs_inode *ui, *dir_ui = ubifs_inode(dir); in do_tmpfile()
365 dentry, mode, dir->i_ino); in do_tmpfile()
367 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in do_tmpfile()
384 inode = ubifs_new_inode(c, dir, mode); in do_tmpfile()
396 err = ubifs_init_security(dir, inode, &dentry->d_name); in do_tmpfile()
416 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in do_tmpfile()
440 static int ubifs_tmpfile(struct inode *dir, struct dentry *dentry, in ubifs_tmpfile() argument
443 return do_tmpfile(dir, dentry, mode, NULL); in ubifs_tmpfile()
500 struct inode *dir = file_inode(file); in ubifs_readdir() local
501 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_readdir()
502 bool encrypted = ubifs_crypt_is_encrypted(dir); in ubifs_readdir()
504 dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, ctx->pos); in ubifs_readdir()
514 err = fscrypt_get_encryption_info(dir); in ubifs_readdir()
518 err = fscrypt_fname_alloc_buffer(dir, UBIFS_MAX_NLEN, &fstr); in ubifs_readdir()
553 lowest_dent_key(c, &key, dir->i_ino); in ubifs_readdir()
571 dent_key_init_hash(c, &key, dir->i_ino, ctx->pos); in ubifs_readdir()
587 ubifs_inode(dir)->creat_sqnum); in ubifs_readdir()
595 err = fscrypt_fname_disk_to_usr(dir, key_hash_flash(c, in ubifs_readdir()
652 static int ubifs_dir_release(struct inode *dir, struct file *file) in ubifs_dir_release() argument
685 static int ubifs_link(struct dentry *old_dentry, struct inode *dir, in ubifs_link() argument
688 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_link()
691 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_link()
704 inode->i_nlink, dir->i_ino); in ubifs_link()
705 ubifs_assert(c, inode_is_locked(dir)); in ubifs_link()
708 err = fscrypt_prepare_link(old_dentry, dir, dentry); in ubifs_link()
712 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_link()
724 lock_2_inodes(dir, inode); in ubifs_link()
733 dir->i_size += sz_change; in ubifs_link()
734 dir_ui->ui_size = dir->i_size; in ubifs_link()
735 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_link()
736 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_link()
739 unlock_2_inodes(dir, inode); in ubifs_link()
747 dir->i_size -= sz_change; in ubifs_link()
748 dir_ui->ui_size = dir->i_size; in ubifs_link()
752 unlock_2_inodes(dir, inode); in ubifs_link()
760 static int ubifs_unlink(struct inode *dir, struct dentry *dentry) in ubifs_unlink() argument
762 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_unlink()
764 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_unlink()
779 inode->i_nlink, dir->i_ino); in ubifs_unlink()
781 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_unlink()
791 ubifs_assert(c, inode_is_locked(dir)); in ubifs_unlink()
804 lock_2_inodes(dir, inode); in ubifs_unlink()
805 inode->i_ctime = current_time(dir); in ubifs_unlink()
807 dir->i_size -= sz_change; in ubifs_unlink()
808 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
809 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_unlink()
810 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_unlink()
813 unlock_2_inodes(dir, inode); in ubifs_unlink()
826 dir->i_size += sz_change; in ubifs_unlink()
827 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
829 unlock_2_inodes(dir, inode); in ubifs_unlink()
845 int ubifs_check_dir_empty(struct inode *dir) in ubifs_check_dir_empty() argument
847 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_check_dir_empty()
853 lowest_dent_key(c, &key, dir->i_ino); in ubifs_check_dir_empty()
866 static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) in ubifs_rmdir() argument
868 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_rmdir()
871 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_rmdir()
882 inode->i_ino, dir->i_ino); in ubifs_rmdir()
883 ubifs_assert(c, inode_is_locked(dir)); in ubifs_rmdir()
889 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_rmdir()
906 lock_2_inodes(dir, inode); in ubifs_rmdir()
907 inode->i_ctime = current_time(dir); in ubifs_rmdir()
909 drop_nlink(dir); in ubifs_rmdir()
910 dir->i_size -= sz_change; in ubifs_rmdir()
911 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
912 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_rmdir()
913 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_rmdir()
916 unlock_2_inodes(dir, inode); in ubifs_rmdir()
929 dir->i_size += sz_change; in ubifs_rmdir()
930 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
931 inc_nlink(dir); in ubifs_rmdir()
933 unlock_2_inodes(dir, inode); in ubifs_rmdir()
941 static int ubifs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in ubifs_mkdir() argument
944 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mkdir()
945 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mkdir()
956 dentry, mode, dir->i_ino); in ubifs_mkdir()
962 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_mkdir()
968 inode = ubifs_new_inode(c, dir, S_IFDIR | mode); in ubifs_mkdir()
974 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mkdir()
981 inc_nlink(dir); in ubifs_mkdir()
982 dir->i_size += sz_change; in ubifs_mkdir()
983 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
984 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mkdir()
985 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mkdir()
998 dir->i_size -= sz_change; in ubifs_mkdir()
999 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
1000 drop_nlink(dir); in ubifs_mkdir()
1012 static int ubifs_mknod(struct inode *dir, struct dentry *dentry, in ubifs_mknod() argument
1017 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mknod()
1018 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mknod()
1031 dbg_gen("dent '%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_mknod()
1047 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_mknod()
1055 inode = ubifs_new_inode(c, dir, mode); in ubifs_mknod()
1068 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mknod()
1073 dir->i_size += sz_change; in ubifs_mknod()
1074 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1075 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mknod()
1076 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mknod()
1088 dir->i_size -= sz_change; in ubifs_mknod()
1089 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1101 static int ubifs_symlink(struct inode *dir, struct dentry *dentry, in ubifs_symlink() argument
1106 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_symlink()
1107 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_symlink()
1116 symname, dir->i_ino); in ubifs_symlink()
1118 err = fscrypt_prepare_symlink(dir, symname, len, UBIFS_MAX_INO_DATA, in ubifs_symlink()
1131 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_symlink()
1137 inode = ubifs_new_inode(c, dir, S_IFLNK | S_IRWXUGO); in ubifs_symlink()
1168 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_symlink()
1173 dir->i_size += sz_change; in ubifs_symlink()
1174 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1175 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_symlink()
1176 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_symlink()
1187 dir->i_size -= sz_change; in ubifs_symlink()
1188 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1619 static int ubifs_dir_open(struct inode *dir, struct file *file) in ubifs_dir_open() argument
1621 if (ubifs_crypt_is_encrypted(dir)) in ubifs_dir_open()
1622 return fscrypt_get_encryption_info(dir) ? -EACCES : 0; in ubifs_dir_open()