• Home
  • Raw
  • Download

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
97 inode_init_owner(inode, dir, mode); in ubifs_new_inode()
102 err = fscrypt_prepare_new_inode(dir, inode, &encrypted); in ubifs_new_inode()
132 ui->flags = inherit_flags(dir, mode); in ubifs_new_inode()
193 static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry, in ubifs_lookup() argument
200 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_lookup()
203 dbg_gen("'%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_lookup()
205 err = fscrypt_prepare_lookup(dir, dentry, &nm); in ubifs_lookup()
225 dent_key_init_hash(c, &key, dir->i_ino, nm.hash); in ubifs_lookup()
228 dent_key_init(c, &key, dir->i_ino, &nm); in ubifs_lookup()
245 inode = ubifs_iget(dir->i_sb, le64_to_cpu(dent->inum)); in ubifs_lookup()
258 if (IS_ENCRYPTED(dir) && in ubifs_lookup()
260 !fscrypt_has_permitted_context(dir, inode)) { in ubifs_lookup()
262 dir->i_ino, inode->i_ino); in ubifs_lookup()
273 static int ubifs_prepare_create(struct inode *dir, struct dentry *dentry, in ubifs_prepare_create() argument
279 return fscrypt_setup_filename(dir, &dentry->d_name, 0, nm); in ubifs_prepare_create()
282 static int ubifs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in ubifs_create() argument
286 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_create()
289 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_create()
299 dentry, mode, dir->i_ino); in ubifs_create()
305 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_create()
311 inode = ubifs_new_inode(c, dir, mode); in ubifs_create()
317 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_create()
322 dir->i_size += sz_change; in ubifs_create()
323 dir_ui->ui_size = dir->i_size; in ubifs_create()
324 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_create()
325 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_create()
337 dir->i_size -= sz_change; in ubifs_create()
338 dir_ui->ui_size = dir->i_size; in ubifs_create()
351 static struct inode *create_whiteout(struct inode *dir, struct dentry *dentry) in create_whiteout() argument
356 struct ubifs_info *c = dir->i_sb->s_fs_info; in create_whiteout()
366 dentry, mode, dir->i_ino); in create_whiteout()
368 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in create_whiteout()
372 inode = ubifs_new_inode(c, dir, mode); in create_whiteout()
381 err = ubifs_init_security(dir, inode, &dentry->d_name); in create_whiteout()
425 static int ubifs_tmpfile(struct inode *dir, struct dentry *dentry, in ubifs_tmpfile() argument
429 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_tmpfile()
445 dentry, mode, dir->i_ino); in ubifs_tmpfile()
447 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_tmpfile()
464 inode = ubifs_new_inode(c, dir, mode); in ubifs_tmpfile()
471 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_tmpfile()
483 lock_2_inodes(dir, inode); in ubifs_tmpfile()
484 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_tmpfile()
487 unlock_2_inodes(dir, inode); in ubifs_tmpfile()
495 unlock_2_inodes(dir, inode); in ubifs_tmpfile()
563 struct inode *dir = file_inode(file); in ubifs_readdir() local
564 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_readdir()
565 bool encrypted = IS_ENCRYPTED(dir); in ubifs_readdir()
567 dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, ctx->pos); in ubifs_readdir()
577 err = fscrypt_get_encryption_info(dir); in ubifs_readdir()
616 lowest_dent_key(c, &key, dir->i_ino); in ubifs_readdir()
634 dent_key_init_hash(c, &key, dir->i_ino, ctx->pos); in ubifs_readdir()
650 ubifs_inode(dir)->creat_sqnum); in ubifs_readdir()
658 err = fscrypt_fname_disk_to_usr(dir, key_hash_flash(c, in ubifs_readdir()
715 static int ubifs_dir_release(struct inode *dir, struct file *file) in ubifs_dir_release() argument
722 static int ubifs_link(struct dentry *old_dentry, struct inode *dir, in ubifs_link() argument
725 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_link()
728 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_link()
741 inode->i_nlink, dir->i_ino); in ubifs_link()
742 ubifs_assert(c, inode_is_locked(dir)); in ubifs_link()
745 err = fscrypt_prepare_link(old_dentry, dir, dentry); in ubifs_link()
749 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_link()
761 lock_2_inodes(dir, inode); in ubifs_link()
770 dir->i_size += sz_change; in ubifs_link()
771 dir_ui->ui_size = dir->i_size; in ubifs_link()
772 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_link()
773 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_link()
776 unlock_2_inodes(dir, inode); in ubifs_link()
784 dir->i_size -= sz_change; in ubifs_link()
785 dir_ui->ui_size = dir->i_size; in ubifs_link()
789 unlock_2_inodes(dir, inode); in ubifs_link()
797 static int ubifs_unlink(struct inode *dir, struct dentry *dentry) in ubifs_unlink() argument
799 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_unlink()
801 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_unlink()
816 inode->i_nlink, dir->i_ino); in ubifs_unlink()
818 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_unlink()
828 ubifs_assert(c, inode_is_locked(dir)); in ubifs_unlink()
841 lock_2_inodes(dir, inode); in ubifs_unlink()
842 inode->i_ctime = current_time(dir); in ubifs_unlink()
844 dir->i_size -= sz_change; in ubifs_unlink()
845 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
846 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_unlink()
847 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_unlink()
850 unlock_2_inodes(dir, inode); in ubifs_unlink()
863 dir->i_size += sz_change; in ubifs_unlink()
864 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
866 unlock_2_inodes(dir, inode); in ubifs_unlink()
882 int ubifs_check_dir_empty(struct inode *dir) in ubifs_check_dir_empty() argument
884 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_check_dir_empty()
890 lowest_dent_key(c, &key, dir->i_ino); in ubifs_check_dir_empty()
903 static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) in ubifs_rmdir() argument
905 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_rmdir()
908 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_rmdir()
919 inode->i_ino, dir->i_ino); in ubifs_rmdir()
920 ubifs_assert(c, inode_is_locked(dir)); in ubifs_rmdir()
926 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_rmdir()
943 lock_2_inodes(dir, inode); in ubifs_rmdir()
944 inode->i_ctime = current_time(dir); in ubifs_rmdir()
946 drop_nlink(dir); in ubifs_rmdir()
947 dir->i_size -= sz_change; in ubifs_rmdir()
948 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
949 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_rmdir()
950 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_rmdir()
953 unlock_2_inodes(dir, inode); in ubifs_rmdir()
966 dir->i_size += sz_change; in ubifs_rmdir()
967 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
968 inc_nlink(dir); in ubifs_rmdir()
970 unlock_2_inodes(dir, inode); in ubifs_rmdir()
978 static int ubifs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in ubifs_mkdir() argument
981 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mkdir()
982 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mkdir()
994 dentry, mode, dir->i_ino); in ubifs_mkdir()
1000 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_mkdir()
1006 inode = ubifs_new_inode(c, dir, S_IFDIR | mode); in ubifs_mkdir()
1012 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mkdir()
1019 inc_nlink(dir); in ubifs_mkdir()
1020 dir->i_size += sz_change; in ubifs_mkdir()
1021 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
1022 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mkdir()
1023 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mkdir()
1036 dir->i_size -= sz_change; in ubifs_mkdir()
1037 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
1038 drop_nlink(dir); in ubifs_mkdir()
1050 static int ubifs_mknod(struct inode *dir, struct dentry *dentry, in ubifs_mknod() argument
1055 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mknod()
1056 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mknod()
1069 dbg_gen("dent '%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_mknod()
1085 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_mknod()
1093 inode = ubifs_new_inode(c, dir, mode); in ubifs_mknod()
1106 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mknod()
1111 dir->i_size += sz_change; in ubifs_mknod()
1112 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1113 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mknod()
1114 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mknod()
1126 dir->i_size -= sz_change; in ubifs_mknod()
1127 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1139 static int ubifs_symlink(struct inode *dir, struct dentry *dentry, in ubifs_symlink() argument
1144 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_symlink()
1145 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_symlink()
1153 symname, dir->i_ino); in ubifs_symlink()
1155 err = fscrypt_prepare_symlink(dir, symname, len, UBIFS_MAX_INO_DATA, in ubifs_symlink()
1169 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_symlink()
1175 inode = ubifs_new_inode(c, dir, S_IFLNK | S_IRWXUGO); in ubifs_symlink()
1206 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_symlink()
1211 dir->i_size += sz_change; in ubifs_symlink()
1212 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1213 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_symlink()
1214 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_symlink()
1225 dir->i_size -= sz_change; in ubifs_symlink()
1226 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1689 static int ubifs_dir_open(struct inode *dir, struct file *file) in ubifs_dir_open() argument
1691 if (IS_ENCRYPTED(dir)) in ubifs_dir_open()
1692 return fscrypt_get_encryption_info(dir) ? -EACCES : 0; in ubifs_dir_open()