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()
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 inode *dir, struct dentry *dentry, umode_t mode, 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()
360 struct ubifs_inode *ui, *dir_ui = ubifs_inode(dir); in do_tmpfile()
372 dentry, mode, dir->i_ino); in do_tmpfile()
374 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in do_tmpfile()
391 inode = ubifs_new_inode(c, dir, mode); in do_tmpfile()
403 err = ubifs_init_security(dir, inode, &dentry->d_name); in do_tmpfile()
423 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in do_tmpfile()
449 static int ubifs_tmpfile(struct inode *dir, struct dentry *dentry, in ubifs_tmpfile() argument
452 return do_tmpfile(dir, dentry, mode, NULL); in ubifs_tmpfile()
509 struct inode *dir = file_inode(file); in ubifs_readdir() local
510 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_readdir()
511 bool encrypted = IS_ENCRYPTED(dir); in ubifs_readdir()
513 dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, ctx->pos); in ubifs_readdir()
523 err = fscrypt_prepare_readdir(dir); in ubifs_readdir()
562 lowest_dent_key(c, &key, dir->i_ino); in ubifs_readdir()
580 dent_key_init_hash(c, &key, dir->i_ino, ctx->pos); in ubifs_readdir()
596 ubifs_inode(dir)->creat_sqnum); in ubifs_readdir()
604 err = fscrypt_fname_disk_to_usr(dir, key_hash_flash(c, in ubifs_readdir()
661 static int ubifs_dir_release(struct inode *dir, struct file *file) in ubifs_dir_release() argument
694 static int ubifs_link(struct dentry *old_dentry, struct inode *dir, in ubifs_link() argument
697 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_link()
700 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_link()
713 inode->i_nlink, dir->i_ino); in ubifs_link()
714 ubifs_assert(c, inode_is_locked(dir)); in ubifs_link()
717 err = fscrypt_prepare_link(old_dentry, dir, dentry); in ubifs_link()
721 err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); in ubifs_link()
733 lock_2_inodes(dir, inode); in ubifs_link()
742 dir->i_size += sz_change; in ubifs_link()
743 dir_ui->ui_size = dir->i_size; in ubifs_link()
744 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_link()
745 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_link()
748 unlock_2_inodes(dir, inode); in ubifs_link()
756 dir->i_size -= sz_change; in ubifs_link()
757 dir_ui->ui_size = dir->i_size; in ubifs_link()
761 unlock_2_inodes(dir, inode); in ubifs_link()
769 static int ubifs_unlink(struct inode *dir, struct dentry *dentry) in ubifs_unlink() argument
771 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_unlink()
773 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_unlink()
788 inode->i_nlink, dir->i_ino); in ubifs_unlink()
790 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_unlink()
800 ubifs_assert(c, inode_is_locked(dir)); in ubifs_unlink()
813 lock_2_inodes(dir, inode); in ubifs_unlink()
814 inode->i_ctime = current_time(dir); in ubifs_unlink()
816 dir->i_size -= sz_change; in ubifs_unlink()
817 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
818 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_unlink()
819 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_unlink()
822 unlock_2_inodes(dir, inode); in ubifs_unlink()
835 dir->i_size += sz_change; in ubifs_unlink()
836 dir_ui->ui_size = dir->i_size; in ubifs_unlink()
838 unlock_2_inodes(dir, inode); in ubifs_unlink()
854 int ubifs_check_dir_empty(struct inode *dir) in ubifs_check_dir_empty() argument
856 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_check_dir_empty()
862 lowest_dent_key(c, &key, dir->i_ino); in ubifs_check_dir_empty()
875 static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) in ubifs_rmdir() argument
877 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_rmdir()
880 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_rmdir()
891 inode->i_ino, dir->i_ino); in ubifs_rmdir()
892 ubifs_assert(c, inode_is_locked(dir)); in ubifs_rmdir()
898 err = fscrypt_setup_filename(dir, &dentry->d_name, 1, &nm); in ubifs_rmdir()
915 lock_2_inodes(dir, inode); in ubifs_rmdir()
916 inode->i_ctime = current_time(dir); in ubifs_rmdir()
918 drop_nlink(dir); in ubifs_rmdir()
919 dir->i_size -= sz_change; in ubifs_rmdir()
920 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
921 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_rmdir()
922 err = ubifs_jnl_update(c, dir, &nm, inode, 1, 0); in ubifs_rmdir()
925 unlock_2_inodes(dir, inode); in ubifs_rmdir()
938 dir->i_size += sz_change; in ubifs_rmdir()
939 dir_ui->ui_size = dir->i_size; in ubifs_rmdir()
940 inc_nlink(dir); in ubifs_rmdir()
942 unlock_2_inodes(dir, inode); in ubifs_rmdir()
950 static int ubifs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in ubifs_mkdir() argument
953 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mkdir()
954 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mkdir()
966 dentry, mode, dir->i_ino); in ubifs_mkdir()
972 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_mkdir()
978 inode = ubifs_new_inode(c, dir, S_IFDIR | mode); in ubifs_mkdir()
984 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mkdir()
991 inc_nlink(dir); in ubifs_mkdir()
992 dir->i_size += sz_change; in ubifs_mkdir()
993 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
994 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mkdir()
995 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mkdir()
1008 dir->i_size -= sz_change; in ubifs_mkdir()
1009 dir_ui->ui_size = dir->i_size; in ubifs_mkdir()
1010 drop_nlink(dir); in ubifs_mkdir()
1022 static int ubifs_mknod(struct inode *dir, struct dentry *dentry, in ubifs_mknod() argument
1027 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_mknod()
1028 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_mknod()
1041 dbg_gen("dent '%pd' in dir ino %lu", dentry, dir->i_ino); in ubifs_mknod()
1057 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_mknod()
1065 inode = ubifs_new_inode(c, dir, mode); in ubifs_mknod()
1078 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_mknod()
1083 dir->i_size += sz_change; in ubifs_mknod()
1084 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1085 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_mknod()
1086 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_mknod()
1098 dir->i_size -= sz_change; in ubifs_mknod()
1099 dir_ui->ui_size = dir->i_size; in ubifs_mknod()
1111 static int ubifs_symlink(struct inode *dir, struct dentry *dentry, in ubifs_symlink() argument
1116 struct ubifs_inode *dir_ui = ubifs_inode(dir); in ubifs_symlink()
1117 struct ubifs_info *c = dir->i_sb->s_fs_info; in ubifs_symlink()
1126 symname, dir->i_ino); in ubifs_symlink()
1128 err = fscrypt_prepare_symlink(dir, symname, len, UBIFS_MAX_INO_DATA, in ubifs_symlink()
1141 err = ubifs_prepare_create(dir, dentry, &nm); in ubifs_symlink()
1147 inode = ubifs_new_inode(c, dir, S_IFLNK | S_IRWXUGO); in ubifs_symlink()
1178 err = ubifs_init_security(dir, inode, &dentry->d_name); in ubifs_symlink()
1183 dir->i_size += sz_change; in ubifs_symlink()
1184 dir_ui->ui_size = dir->i_size; in ubifs_symlink()
1185 dir->i_mtime = dir->i_ctime = inode->i_ctime; in ubifs_symlink()
1186 err = ubifs_jnl_update(c, dir, &nm, inode, 0, 0); in ubifs_symlink()
1197 dir->i_size -= sz_change; in ubifs_symlink()
1198 dir_ui->ui_size = dir->i_size; in ubifs_symlink()