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(&init_user_ns, 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()
226 dent_key_init_hash(c, &key, dir->i_ino, nm.hash); in ubifs_lookup()
229 dent_key_init(c, &key, dir->i_ino, &nm); in ubifs_lookup()
246 inode = ubifs_iget(dir->i_sb, le64_to_cpu(dent->inum)); in ubifs_lookup()
259 if (IS_ENCRYPTED(dir) && in ubifs_lookup()
261 !fscrypt_has_permitted_context(dir, inode)) { in ubifs_lookup()
263 dir->i_ino, inode->i_ino); in ubifs_lookup()
274 static int ubifs_prepare_create(struct inode *dir, struct dentry *dentry, in ubifs_prepare_create() argument
280 return fscrypt_setup_filename(dir, &dentry->d_name, 0, nm); in ubifs_prepare_create()
283 static int ubifs_create(struct user_namespace *mnt_userns, struct inode *dir, in ubifs_create() argument
287 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_create()
290 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_create()
300 dentry, mode, dir->i_ino); in ubifs_create()
306 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_create()
312 inode = ubifs_new_inode(c, dir, mode); in ubifs_create()
318 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_create()
323 dir->i_size += sz_change; in ubifs_create()
324 dir_ui->ui_size = dir->i_size; in ubifs_create()
325 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_create()
326 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_create()
338 dir->i_size -= sz_change; in ubifs_create()
339 dir_ui->ui_size = dir->i_size; in ubifs_create()
352 static int do_tmpfile(struct inode *dir, struct dentry *dentry, in do_tmpfile() argument
356 struct ubifs_info *c = dir->i_sb->s_fs_info; in do_tmpfile()
359 struct ubifs_inode *ui, *dir_ui = ubifs_inode(dir); in do_tmpfile()
369 dentry, mode, dir->i_ino); in do_tmpfile()
371 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in do_tmpfile()
388 inode = ubifs_new_inode(c, dir, mode); in do_tmpfile()
400 err = ubifs_init_security(dir, inode, &dentry->d_name); in do_tmpfile()
420 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in do_tmpfile()
444 static int ubifs_tmpfile(struct user_namespace *mnt_userns, struct inode *dir, in ubifs_tmpfile() argument
447 return do_tmpfile(dir, dentry, mode, NULL); in ubifs_tmpfile()
504 struct inode *dir = file_inode(file); in ubifs_readdir() local
505 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_readdir()
506 bool encrypted = IS_ENCRYPTED(dir); in ubifs_readdir()
508 dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, ctx->pos); in ubifs_readdir()
518 err = fscrypt_prepare_readdir(dir); in ubifs_readdir()
557 lowest_dent_key(c, &key, dir->i_ino); in ubifs_readdir()
575 dent_key_init_hash(c, &key, dir->i_ino, ctx->pos); in ubifs_readdir()
591 ubifs_inode(dir)->creat_sqnum); in ubifs_readdir()
599 err = fscrypt_fname_disk_to_usr(dir, key_hash_flash(c, in ubifs_readdir()
656 static int ubifs_dir_release(struct inode *dir, struct file *file) in ubifs_dir_release() argument
689 static int ubifs_link(struct dentry *old_dentry, struct inode *dir, in ubifs_link() argument
692 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_link()
695 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_link()
708 inode->i_nlink, dir->i_ino); in ubifs_link()
709 ubifs_assert(c, inode_is_locked(dir)); in ubifs_link()
712 err = fscrypt_prepare_link(old_dentry, dir, dentry); in ubifs_link()
716 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_link()
728 lock_2_inodes(dir, inode); in ubifs_link()
737 dir->i_size += sz_change; in ubifs_link()
738 dir_ui->ui_size = dir->i_size; in ubifs_link()
739 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_link()
740 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_link()
743 unlock_2_inodes(dir, inode); in ubifs_link()
751 dir->i_size -= sz_change; in ubifs_link()
752 dir_ui->ui_size = dir->i_size; in ubifs_link()
756 unlock_2_inodes(dir, inode); in ubifs_link()
764 static int ubifs_unlink(struct inode *dir, struct dentry *dentry) in ubifs_unlink() argument
766 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_unlink()
768 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_unlink()
783 inode->i_nlink, dir->i_ino); in ubifs_unlink()
785 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_unlink()
795 ubifs_assert(c, inode_is_locked(dir)); in ubifs_unlink()
808 lock_2_inodes(dir, inode); in ubifs_unlink()
809 inode->i_ctime = current_time(dir); in ubifs_unlink()
811 dir->i_size -= sz_change; in ubifs_unlink()
812 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
813 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_unlink()
814 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_unlink()
817 unlock_2_inodes(dir, inode); in ubifs_unlink()
830 dir->i_size += sz_change; in ubifs_unlink()
831 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
833 unlock_2_inodes(dir, inode); in ubifs_unlink()
849 int ubifs_check_dir_empty(struct inode *dir) in ubifs_check_dir_empty() argument
851 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_check_dir_empty()
857 lowest_dent_key(c, &key, dir->i_ino); in ubifs_check_dir_empty()
870 static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) in ubifs_rmdir() argument
872 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_rmdir()
875 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_rmdir()
886 inode->i_ino, dir->i_ino); in ubifs_rmdir()
887 ubifs_assert(c, inode_is_locked(dir)); in ubifs_rmdir()
893 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_rmdir()
910 lock_2_inodes(dir, inode); in ubifs_rmdir()
911 inode->i_ctime = current_time(dir); in ubifs_rmdir()
913 drop_nlink(dir); in ubifs_rmdir()
914 dir->i_size -= sz_change; in ubifs_rmdir()
915 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
916 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_rmdir()
917 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_rmdir()
920 unlock_2_inodes(dir, inode); in ubifs_rmdir()
933 dir->i_size += sz_change; in ubifs_rmdir()
934 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
935 inc_nlink(dir); in ubifs_rmdir()
937 unlock_2_inodes(dir, inode); in ubifs_rmdir()
945 static int ubifs_mkdir(struct user_namespace *mnt_userns, struct inode *dir, in ubifs_mkdir() argument
949 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mkdir()
950 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mkdir()
961 dentry, mode, dir->i_ino); in ubifs_mkdir()
967 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_mkdir()
973 inode = ubifs_new_inode(c, dir, S_IFDIR | mode); in ubifs_mkdir()
979 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mkdir()
986 inc_nlink(dir); in ubifs_mkdir()
987 dir->i_size += sz_change; in ubifs_mkdir()
988 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
989 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mkdir()
990 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mkdir()
1003 dir->i_size -= sz_change; in ubifs_mkdir()
1004 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
1005 drop_nlink(dir); in ubifs_mkdir()
1017 static int ubifs_mknod(struct user_namespace *mnt_userns, struct inode *dir, in ubifs_mknod() argument
1022 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mknod()
1023 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mknod()
1036 dbg_gen("dent '%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_mknod()
1052 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_mknod()
1060 inode = ubifs_new_inode(c, dir, mode); in ubifs_mknod()
1073 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mknod()
1078 dir->i_size += sz_change; in ubifs_mknod()
1079 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1080 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mknod()
1081 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mknod()
1093 dir->i_size -= sz_change; in ubifs_mknod()
1094 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1106 static int ubifs_symlink(struct user_namespace *mnt_userns, struct inode *dir, in ubifs_symlink() argument
1111 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_symlink()
1112 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_symlink()
1121 symname, dir->i_ino); in ubifs_symlink()
1123 err = fscrypt_prepare_symlink(dir, symname, len, UBIFS_MAX_INO_DATA, in ubifs_symlink()
1136 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_symlink()
1142 inode = ubifs_new_inode(c, dir, S_IFLNK | S_IRWXUGO); in ubifs_symlink()
1173 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_symlink()
1178 dir->i_size += sz_change; in ubifs_symlink()
1179 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1180 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_symlink()
1181 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_symlink()
1192 dir->i_size -= sz_change; in ubifs_symlink()
1193 dir_ui->ui_size = dir->i_size; in ubifs_symlink()