Lines Matching refs:dir

12 static void hpfs_update_directory_times(struct inode *dir)
14 time64_t t = local_to_gmt(dir->i_sb, local_get_seconds(dir->i_sb));
15 if (t == inode_get_mtime_sec(dir) &&
16 t == inode_get_ctime_sec(dir))
18 inode_set_mtime_to_ts(dir, inode_set_ctime(dir, t, 0));
19 hpfs_write_inode_nolock(dir);
22 static int hpfs_mkdir(struct mnt_idmap *idmap, struct inode *dir,
39 hpfs_lock(dir->i_sb);
41 fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh);
44 dnode = hpfs_alloc_dnode(dir->i_sb, fno, &dno, &qbh0);
53 dee.creation_date = dee.write_date = dee.read_date = cpu_to_le32(local_get_seconds(dir->i_sb));
54 result = new_inode(dir->i_sb);
59 hpfs_i(result)->i_parent_dir = dir->i_ino;
62 inode_set_atime_to_ts(result, inode_set_ctime(result, local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)), 0)));
73 r = hpfs_add_dirent(dir, name, len, &dee);
82 fnode->up = cpu_to_le32(dir->i_ino);
91 de = hpfs_add_de(dir->i_sb, dnode, "\001\001", 2, 0);
92 de->creation_date = de->write_date = de->read_date = cpu_to_le32(local_get_seconds(dir->i_sb));
101 inc_nlink(dir);
112 hpfs_update_directory_times(dir);
114 hpfs_unlock(dir->i_sb);
120 hpfs_free_dnode(dir->i_sb, dno);
123 hpfs_free_sectors(dir->i_sb, fno, 1);
125 hpfs_unlock(dir->i_sb);
129 static int hpfs_create(struct mnt_idmap *idmap, struct inode *dir,
143 hpfs_lock(dir->i_sb);
145 fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh);
153 dee.creation_date = dee.write_date = dee.read_date = cpu_to_le32(local_get_seconds(dir->i_sb));
155 result = new_inode(dir->i_sb);
166 hpfs_i(result)->i_parent_dir = dir->i_ino;
168 inode_set_atime_to_ts(result, inode_set_ctime(result, local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)), 0)));
177 r = hpfs_add_dirent(dir, name, len, &dee);
186 fnode->up = cpu_to_le32(dir->i_ino);
200 hpfs_update_directory_times(dir);
202 hpfs_unlock(dir->i_sb);
209 hpfs_free_sectors(dir->i_sb, fno, 1);
211 hpfs_unlock(dir->i_sb);
215 static int hpfs_mknod(struct mnt_idmap *idmap, struct inode *dir,
228 if (hpfs_sb(dir->i_sb)->sb_eas < 2) return -EPERM;
229 hpfs_lock(dir->i_sb);
231 fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh);
239 dee.creation_date = dee.write_date = dee.read_date = cpu_to_le32(local_get_seconds(dir->i_sb));
241 result = new_inode(dir->i_sb);
247 hpfs_i(result)->i_parent_dir = dir->i_ino;
249 inode_set_atime_to_ts(result, inode_set_ctime(result, local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)), 0)));
258 r = hpfs_add_dirent(dir, name, len, &dee);
267 fnode->up = cpu_to_le32(dir->i_ino);
273 hpfs_update_directory_times(dir);
276 hpfs_unlock(dir->i_sb);
282 hpfs_free_sectors(dir->i_sb, fno, 1);
284 hpfs_unlock(dir->i_sb);
288 static int hpfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
301 hpfs_lock(dir->i_sb);
302 if (hpfs_sb(dir->i_sb)->sb_eas < 2) {
303 hpfs_unlock(dir->i_sb);
307 fnode = hpfs_alloc_fnode(dir->i_sb, hpfs_i(dir)->i_dno, &fno, &bh);
314 dee.creation_date = dee.write_date = dee.read_date = cpu_to_le32(local_get_seconds(dir->i_sb));
316 result = new_inode(dir->i_sb);
321 hpfs_i(result)->i_parent_dir = dir->i_ino;
323 inode_set_atime_to_ts(result, inode_set_ctime(result, local_to_gmt(dir->i_sb, le32_to_cpu(dee.creation_date)), 0)));
335 r = hpfs_add_dirent(dir, name, len, &dee);
344 fnode->up = cpu_to_le32(dir->i_ino);
352 hpfs_update_directory_times(dir);
354 hpfs_unlock(dir->i_sb);
360 hpfs_free_sectors(dir->i_sb, fno, 1);
362 hpfs_unlock(dir->i_sb);
366 static int hpfs_unlink(struct inode *dir, struct dentry *dentry)
377 hpfs_lock(dir->i_sb);
381 de = map_dirent(dir, hpfs_i(dir)->i_dno, name, len, &dno, &qbh);
393 r = hpfs_remove_dirent(dir, dno, de, &qbh, 1);
396 hpfs_error(dir->i_sb, "there was error when removing dirent");
412 hpfs_update_directory_times(dir);
413 hpfs_unlock(dir->i_sb);
417 static int hpfs_rmdir(struct inode *dir, struct dentry *dentry)
430 hpfs_lock(dir->i_sb);
432 de = map_dirent(dir, hpfs_i(dir)->i_dno, name, len, &dno, &qbh);
444 hpfs_count_dnodes(dir->i_sb, hpfs_i(inode)->i_dno, NULL, NULL, &n_items);
449 r = hpfs_remove_dirent(dir, dno, de, &qbh, 1);
452 hpfs_error(dir->i_sb, "there was error when removing dirent");
459 drop_nlink(dir);
468 hpfs_update_directory_times(dir);
469 hpfs_unlock(dir->i_sb);