• Home
  • Raw
  • Download

Lines Matching +full:de +full:- +full:be

22 #define INC_DIR_INODE_NLINK(i) if (i->i_nlink != 1) { inc_nlink(i); if (i->i_nlink >= REISERFS_LINK…
23 #define DEC_DIR_INODE_NLINK(i) if (i->i_nlink != 1) drop_nlink(i);
29 static int bin_search_in_dir_item(struct reiserfs_dir_entry *de, loff_t off) in bin_search_in_dir_item() argument
31 struct item_head *ih = de->de_ih; in bin_search_in_dir_item()
32 struct reiserfs_de_head *deh = de->de_deh; in bin_search_in_dir_item()
36 rbound = ih_entry_count(ih) - 1; in bin_search_in_dir_item()
41 rbound = j - 1; in bin_search_in_dir_item()
49 de->de_entry_num = j; in bin_search_in_dir_item()
53 de->de_entry_num = lbound; in bin_search_in_dir_item()
58 * comment? maybe something like set de to point to what the path points to?
60 static inline void set_de_item_location(struct reiserfs_dir_entry *de, in set_de_item_location() argument
63 de->de_bh = get_last_bh(path); in set_de_item_location()
64 de->de_ih = tp_item_head(path); in set_de_item_location()
65 de->de_deh = B_I_DEH(de->de_bh, de->de_ih); in set_de_item_location()
66 de->de_item_num = PATH_LAST_POSITION(path); in set_de_item_location()
72 inline void set_de_name_and_namelen(struct reiserfs_dir_entry *de) in set_de_name_and_namelen() argument
74 struct reiserfs_de_head *deh = de->de_deh + de->de_entry_num; in set_de_name_and_namelen()
76 BUG_ON(de->de_entry_num >= ih_entry_count(de->de_ih)); in set_de_name_and_namelen()
78 de->de_entrylen = entry_length(de->de_bh, de->de_ih, de->de_entry_num); in set_de_name_and_namelen()
79 de->de_namelen = de->de_entrylen - (de_with_sd(deh) ? SD_SIZE : 0); in set_de_name_and_namelen()
80 de->de_name = ih_item_body(de->de_bh, de->de_ih) + deh_location(deh); in set_de_name_and_namelen()
81 if (de->de_name[de->de_namelen - 1] == 0) in set_de_name_and_namelen()
82 de->de_namelen = strlen(de->de_name); in set_de_name_and_namelen()
86 static inline void set_de_object_key(struct reiserfs_dir_entry *de) in set_de_object_key() argument
88 BUG_ON(de->de_entry_num >= ih_entry_count(de->de_ih)); in set_de_object_key()
89 de->de_dir_id = deh_dir_id(&de->de_deh[de->de_entry_num]); in set_de_object_key()
90 de->de_objectid = deh_objectid(&de->de_deh[de->de_entry_num]); in set_de_object_key()
93 static inline void store_de_entry_key(struct reiserfs_dir_entry *de) in store_de_entry_key() argument
95 struct reiserfs_de_head *deh = de->de_deh + de->de_entry_num; in store_de_entry_key()
97 BUG_ON(de->de_entry_num >= ih_entry_count(de->de_ih)); in store_de_entry_key()
100 de->de_entry_key.version = KEY_FORMAT_3_5; in store_de_entry_key()
101 de->de_entry_key.on_disk_key.k_dir_id = in store_de_entry_key()
102 le32_to_cpu(de->de_ih->ih_key.k_dir_id); in store_de_entry_key()
103 de->de_entry_key.on_disk_key.k_objectid = in store_de_entry_key()
104 le32_to_cpu(de->de_ih->ih_key.k_objectid); in store_de_entry_key()
105 set_cpu_key_k_offset(&de->de_entry_key, deh_offset(deh)); in store_de_entry_key()
106 set_cpu_key_k_type(&de->de_entry_key, TYPE_DIRENTRY); in store_de_entry_key()
119 /* The function is NOT SCHEDULE-SAFE! */
121 struct treepath *path, struct reiserfs_dir_entry *de) in search_by_entry_key() argument
129 reiserfs_error(sb, "vs-7000", "search_by_key " in search_by_entry_key()
134 PATH_LAST_POSITION(path)--; in search_by_entry_key()
145 reiserfs_error(sb, "vs-7002", "no path to here"); in search_by_entry_key()
149 set_de_item_location(de, path); in search_by_entry_key()
152 if (!is_direntry_le_ih(de->de_ih) || in search_by_entry_key()
153 COMP_SHORT_KEYS(&de->de_ih->ih_key, key)) { in search_by_entry_key()
154 print_block(de->de_bh, 0, -1, -1); in search_by_entry_key()
155 reiserfs_panic(sb, "vs-7005", "found item %h is not directory " in search_by_entry_key()
157 "as key %K", de->de_ih, key); in search_by_entry_key()
163 * key. sets de->de_entry_num of de in search_by_entry_key()
165 retval = bin_search_in_dir_item(de, cpu_key_k_offset(key)); in search_by_entry_key()
166 path->pos_in_item = de->de_entry_num; in search_by_entry_key()
172 set_de_name_and_namelen(de); in search_by_entry_key()
173 set_de_object_key(de); in search_by_entry_key()
178 /* Keyed 32-bit hash function using TEA in a Davis-Meyer function */
183 * but are thought about. This function should be moved to hashes.c
184 * Jedi, please do so. -Hans
196 res = REISERFS_SB(s)->s_hash_function(name, len); in get_third_component()
198 /* take bits from 7-th to 30-th including both bounds */ in get_third_component()
209 static int reiserfs_match(struct reiserfs_dir_entry *de, in reiserfs_match() argument
214 if ((namelen == de->de_namelen) && in reiserfs_match()
215 !memcmp(de->de_name, name, de->de_namelen)) in reiserfs_match()
217 (de_visible(de->de_deh + de->de_entry_num) ? NAME_FOUND : in reiserfs_match()
223 /* de's de_bh, de_ih, de_deh, de_item_num, de_entry_num are set already */
228 struct reiserfs_dir_entry *de, in linear_search_in_dir_item() argument
231 struct reiserfs_de_head *deh = de->de_deh; in linear_search_in_dir_item()
235 i = de->de_entry_num; in linear_search_in_dir_item()
237 if (i == ih_entry_count(de->de_ih) || in linear_search_in_dir_item()
240 i--; in linear_search_in_dir_item()
243 RFALSE(de->de_deh != B_I_DEH(de->de_bh, de->de_ih), in linear_search_in_dir_item()
244 "vs-7010: array of entry headers not found"); in linear_search_in_dir_item()
248 for (; i >= 0; i--, deh--) { in linear_search_in_dir_item()
256 if (de->de_gen_number_bit_string) in linear_search_in_dir_item()
258 de->de_gen_number_bit_string); in linear_search_in_dir_item()
261 de->de_entry_num = i; in linear_search_in_dir_item()
262 set_de_name_and_namelen(de); in linear_search_in_dir_item()
265 * de's de_name, de_namelen, de_recordlen are set. in linear_search_in_dir_item()
269 reiserfs_match(de, name, namelen)) != NAME_NOT_FOUND) { in linear_search_in_dir_item()
272 set_de_object_key(de); in linear_search_in_dir_item()
274 store_de_entry_key(de); in linear_search_in_dir_item()
276 /* retval can be NAME_FOUND or NAME_FOUND_INVISIBLE */ in linear_search_in_dir_item()
281 if (GET_GENERATION_NUMBER(le_ih_k_offset(de->de_ih)) == 0) in linear_search_in_dir_item()
290 * be 0. Btw, in case of Yura's hash it is probably possible, in linear_search_in_dir_item()
295 RFALSE(de->de_item_num, in linear_search_in_dir_item()
296 "vs-7015: two diritems of the same directory in one node?"); in linear_search_in_dir_item()
307 struct reiserfs_dir_entry *de) in reiserfs_find_entry() argument
312 if (namelen > REISERFS_MAX_NAME(dir->i_sb->s_blocksize)) in reiserfs_find_entry()
317 get_third_component(dir->i_sb, name, namelen), in reiserfs_find_entry()
322 search_by_entry_key(dir->i_sb, &key_to_search, in reiserfs_find_entry()
323 path_to_entry, de); in reiserfs_find_entry()
325 reiserfs_error(dir->i_sb, "zam-7001", "io error"); in reiserfs_find_entry()
331 linear_search_in_dir_item(&key_to_search, de, name, in reiserfs_find_entry()
338 path_to_entry->pos_in_item = de->de_entry_num; in reiserfs_find_entry()
344 * and given entry can be there in reiserfs_find_entry()
347 le_ih_k_offset(de->de_ih) - 1); in reiserfs_find_entry()
358 struct reiserfs_dir_entry de; in reiserfs_lookup() local
361 if (REISERFS_MAX_NAME(dir->i_sb->s_blocksize) < dentry->d_name.len) in reiserfs_lookup()
362 return ERR_PTR(-ENAMETOOLONG); in reiserfs_lookup()
364 reiserfs_write_lock(dir->i_sb); in reiserfs_lookup()
366 de.de_gen_number_bit_string = NULL; in reiserfs_lookup()
368 reiserfs_find_entry(dir, dentry->d_name.name, dentry->d_name.len, in reiserfs_lookup()
369 &path_to_entry, &de); in reiserfs_lookup()
372 inode = reiserfs_iget(dir->i_sb, in reiserfs_lookup()
373 (struct cpu_key *)&de.de_dir_id); in reiserfs_lookup()
375 reiserfs_write_unlock(dir->i_sb); in reiserfs_lookup()
376 return ERR_PTR(-EACCES); in reiserfs_lookup()
387 reiserfs_write_unlock(dir->i_sb); in reiserfs_lookup()
389 return ERR_PTR(-EIO); in reiserfs_lookup()
403 struct reiserfs_dir_entry de; in reiserfs_get_parent() local
407 if (dir->i_nlink == 0) { in reiserfs_get_parent()
408 return ERR_PTR(-ENOENT); in reiserfs_get_parent()
410 de.de_gen_number_bit_string = NULL; in reiserfs_get_parent()
412 reiserfs_write_lock(dir->i_sb); in reiserfs_get_parent()
413 retval = reiserfs_find_entry(dir, "..", 2, &path_to_entry, &de); in reiserfs_get_parent()
416 reiserfs_write_unlock(dir->i_sb); in reiserfs_get_parent()
417 return ERR_PTR(-ENOENT); in reiserfs_get_parent()
419 inode = reiserfs_iget(dir->i_sb, (struct cpu_key *)&de.de_dir_id); in reiserfs_get_parent()
420 reiserfs_write_unlock(dir->i_sb); in reiserfs_get_parent()
425 /* add entry to the directory (entry can be hidden).
427 insert definition of when hidden directories are used here -Hans
438 struct reiserfs_dir_entry de; in reiserfs_add_entry() local
452 BUG_ON(!th->t_trans_id); in reiserfs_add_entry()
454 /* cannot allow items to be added into a busy deleted directory */ in reiserfs_add_entry()
456 return -EINVAL; in reiserfs_add_entry()
458 if (namelen > REISERFS_MAX_NAME(dir->i_sb->s_blocksize)) in reiserfs_add_entry()
459 return -ENAMETOOLONG; in reiserfs_add_entry()
463 get_third_component(dir->i_sb, name, namelen), in reiserfs_add_entry()
471 return -ENOMEM; in reiserfs_add_entry()
484 deh->deh_location = 0; /* JDM Endian safe if 0 */ in reiserfs_add_entry()
486 deh->deh_state = 0; /* JDM Endian safe if 0 */ in reiserfs_add_entry()
487 /* put key (ino analog) to de */ in reiserfs_add_entry()
490 deh->deh_dir_id = INODE_PKEY(inode)->k_dir_id; in reiserfs_add_entry()
492 deh->deh_objectid = INODE_PKEY(inode)->k_objectid; in reiserfs_add_entry()
500 * entry is ready to be pasted into tree, set 'visibility' in reiserfs_add_entry()
508 de.de_gen_number_bit_string = bit_string; in reiserfs_add_entry()
509 retval = reiserfs_find_entry(dir, name, namelen, &path, &de); in reiserfs_add_entry()
516 return -EIO; in reiserfs_add_entry()
520 reiserfs_error(dir->i_sb, "zam-7002", in reiserfs_add_entry()
525 return -EEXIST; in reiserfs_add_entry()
533 reiserfs_warning(dir->i_sb, "reiserfs-7010", in reiserfs_add_entry()
539 return -EBUSY; in reiserfs_add_entry()
545 /* update max-hash-collisions counter in reiserfs_sb_info */ in reiserfs_add_entry()
546 PROC_INFO_MAX(th->t_super, max_hash_collisions, gen_number); in reiserfs_add_entry()
548 /* we need to re-search for the insertion point */ in reiserfs_add_entry()
550 if (search_by_entry_key(dir->i_sb, &entry_key, &path, &de) != in reiserfs_add_entry()
552 reiserfs_warning(dir->i_sb, "vs-7032", in reiserfs_add_entry()
559 return -EBUSY; in reiserfs_add_entry()
574 dir->i_size += paste_size; in reiserfs_add_entry()
575 dir->i_mtime = inode_set_ctime_current(dir); in reiserfs_add_entry()
576 if (!S_ISDIR(inode->i_mode) && visible) in reiserfs_add_entry()
587 * This should only be called on inodes that do not have stat data
594 inode->i_flags |= S_NOQUOTA; in drop_new_inode()
608 * Make inode invalid - just in case we are going to drop it before in new_inode_init()
611 INODE_PKEY(inode)->k_objectid = 0; in new_inode_init()
632 2 * (REISERFS_QUOTA_INIT_BLOCKS(dir->i_sb) + in reiserfs_create()
633 REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb)); in reiserfs_create()
641 if (!(inode = new_inode(dir->i_sb))) { in reiserfs_create()
642 return -ENOMEM; in reiserfs_create()
651 retval = reiserfs_security_init(dir, inode, &dentry->d_name, &security); in reiserfs_create()
657 reiserfs_write_lock(dir->i_sb); in reiserfs_create()
659 retval = journal_begin(&th, dir->i_sb, jbegin_count); in reiserfs_create()
671 inode->i_op = &reiserfs_file_inode_operations; in reiserfs_create()
672 inode->i_fop = &reiserfs_file_operations; in reiserfs_create()
673 inode->i_mapping->a_ops = &reiserfs_address_space_operations; in reiserfs_create()
676 reiserfs_add_entry(&th, dir, dentry->d_name.name, in reiserfs_create()
677 dentry->d_name.len, inode, 1 /*visible */ ); in reiserfs_create()
696 reiserfs_write_unlock(dir->i_sb); in reiserfs_create()
714 2 * (REISERFS_QUOTA_INIT_BLOCKS(dir->i_sb) + in reiserfs_mknod()
715 REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb)); in reiserfs_mknod()
721 if (!(inode = new_inode(dir->i_sb))) { in reiserfs_mknod()
722 return -ENOMEM; in reiserfs_mknod()
731 retval = reiserfs_security_init(dir, inode, &dentry->d_name, &security); in reiserfs_mknod()
737 reiserfs_write_lock(dir->i_sb); in reiserfs_mknod()
739 retval = journal_begin(&th, dir->i_sb, jbegin_count); in reiserfs_mknod()
752 inode->i_op = &reiserfs_special_inode_operations; in reiserfs_mknod()
753 init_special_inode(inode, inode->i_mode, rdev); in reiserfs_mknod()
762 reiserfs_add_entry(&th, dir, dentry->d_name.name, in reiserfs_mknod()
763 dentry->d_name.len, inode, 1 /*visible */ ); in reiserfs_mknod()
780 reiserfs_write_unlock(dir->i_sb); in reiserfs_mknod()
798 2 * (REISERFS_QUOTA_INIT_BLOCKS(dir->i_sb) + in reiserfs_mkdir()
799 REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb)); in reiserfs_mkdir()
810 REISERFS_I(dir)->new_packing_locality = 1; in reiserfs_mkdir()
813 if (!(inode = new_inode(dir->i_sb))) { in reiserfs_mkdir()
814 return -ENOMEM; in reiserfs_mkdir()
823 retval = reiserfs_security_init(dir, inode, &dentry->d_name, &security); in reiserfs_mkdir()
829 reiserfs_write_lock(dir->i_sb); in reiserfs_mkdir()
831 retval = journal_begin(&th, dir->i_sb, jbegin_count); in reiserfs_mkdir()
844 old_format_only(dir->i_sb) ? in reiserfs_mkdir()
855 inode->i_op = &reiserfs_dir_inode_operations; in reiserfs_mkdir()
856 inode->i_fop = &reiserfs_dir_operations; in reiserfs_mkdir()
860 reiserfs_add_entry(&th, dir, dentry->d_name.name, in reiserfs_mkdir()
861 dentry->d_name.len, inode, 1 /*visible */ ); in reiserfs_mkdir()
880 reiserfs_write_unlock(dir->i_sb); in reiserfs_mkdir()
893 if (inode->i_size != EMPTY_DIR_SIZE && in reiserfs_empty_dir()
894 inode->i_size != EMPTY_DIR_SIZE_V1) { in reiserfs_empty_dir()
907 struct reiserfs_dir_entry de; in reiserfs_rmdir() local
910 * we will be doing 2 balancings and update 2 stat data, we in reiserfs_rmdir()
917 4 * REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb); in reiserfs_rmdir()
923 reiserfs_write_lock(dir->i_sb); in reiserfs_rmdir()
924 retval = journal_begin(&th, dir->i_sb, jbegin_count); in reiserfs_rmdir()
928 de.de_gen_number_bit_string = NULL; in reiserfs_rmdir()
930 reiserfs_find_entry(dir, dentry->d_name.name, dentry->d_name.len, in reiserfs_rmdir()
931 &path, &de)) == NAME_NOT_FOUND) { in reiserfs_rmdir()
932 retval = -ENOENT; in reiserfs_rmdir()
935 retval = -EIO; in reiserfs_rmdir()
944 if (de.de_objectid != inode->i_ino) { in reiserfs_rmdir()
948 retval = -EIO; in reiserfs_rmdir()
952 retval = -ENOTEMPTY; in reiserfs_rmdir()
957 retval = reiserfs_cut_from_item(&th, &path, &de.de_entry_key, in reiserfs_rmdir()
959 0 /*new file size - not used here */ ); in reiserfs_rmdir()
963 if (inode->i_nlink != 2 && inode->i_nlink != 1) in reiserfs_rmdir()
964 reiserfs_error(inode->i_sb, "reiserfs-7040", in reiserfs_rmdir()
966 inode->i_nlink); in reiserfs_rmdir()
969 dir->i_mtime = inode_set_ctime_to_ts(dir, in reiserfs_rmdir()
974 dir->i_size -= (DEH_SIZE + de.de_entrylen); in reiserfs_rmdir()
983 reiserfs_write_unlock(dir->i_sb); in reiserfs_rmdir()
994 reiserfs_write_unlock(dir->i_sb); in reiserfs_rmdir()
1002 struct reiserfs_dir_entry de; in reiserfs_unlink() local
1015 * in this transaction we can be doing at max two balancings and in reiserfs_unlink()
1023 4 * REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb); in reiserfs_unlink()
1025 reiserfs_write_lock(dir->i_sb); in reiserfs_unlink()
1026 retval = journal_begin(&th, dir->i_sb, jbegin_count); in reiserfs_unlink()
1030 de.de_gen_number_bit_string = NULL; in reiserfs_unlink()
1032 reiserfs_find_entry(dir, dentry->d_name.name, dentry->d_name.len, in reiserfs_unlink()
1033 &path, &de)) == NAME_NOT_FOUND) { in reiserfs_unlink()
1034 retval = -ENOENT; in reiserfs_unlink()
1037 retval = -EIO; in reiserfs_unlink()
1044 if (de.de_objectid != inode->i_ino) { in reiserfs_unlink()
1048 retval = -EIO; in reiserfs_unlink()
1052 if (!inode->i_nlink) { in reiserfs_unlink()
1053 reiserfs_warning(inode->i_sb, "reiserfs-7042", in reiserfs_unlink()
1055 inode->i_ino, inode->i_nlink); in reiserfs_unlink()
1065 savelink = inode->i_nlink; in reiserfs_unlink()
1068 reiserfs_cut_from_item(&th, &path, &de.de_entry_key, dir, NULL, in reiserfs_unlink()
1077 dir->i_size -= (de.de_entrylen + DEH_SIZE); in reiserfs_unlink()
1078 dir->i_mtime = inode_set_ctime_current(dir); in reiserfs_unlink()
1087 reiserfs_write_unlock(dir->i_sb); in reiserfs_unlink()
1097 reiserfs_write_unlock(dir->i_sb); in reiserfs_unlink()
1118 2 * (REISERFS_QUOTA_INIT_BLOCKS(parent_dir->i_sb) + in reiserfs_symlink()
1119 REISERFS_QUOTA_TRANS_BLOCKS(parent_dir->i_sb)); in reiserfs_symlink()
1125 if (!(inode = new_inode(parent_dir->i_sb))) { in reiserfs_symlink()
1126 return -ENOMEM; in reiserfs_symlink()
1134 retval = reiserfs_security_init(parent_dir, inode, &dentry->d_name, in reiserfs_symlink()
1142 reiserfs_write_lock(parent_dir->i_sb); in reiserfs_symlink()
1144 if (item_len > MAX_DIRECT_ITEM_LEN(parent_dir->i_sb->s_blocksize)) { in reiserfs_symlink()
1145 retval = -ENAMETOOLONG; in reiserfs_symlink()
1153 retval = -ENOMEM; in reiserfs_symlink()
1159 retval = journal_begin(&th, parent_dir->i_sb, jbegin_count); in reiserfs_symlink()
1177 inode->i_op = &reiserfs_symlink_inode_operations; in reiserfs_symlink()
1179 inode->i_mapping->a_ops = &reiserfs_address_space_operations; in reiserfs_symlink()
1181 retval = reiserfs_add_entry(&th, parent_dir, dentry->d_name.name, in reiserfs_symlink()
1182 dentry->d_name.len, inode, 1 /*visible */ ); in reiserfs_symlink()
1198 reiserfs_write_unlock(parent_dir->i_sb); in reiserfs_symlink()
1215 2 * REISERFS_QUOTA_TRANS_BLOCKS(dir->i_sb); in reiserfs_link()
1221 reiserfs_write_lock(dir->i_sb); in reiserfs_link()
1222 if (inode->i_nlink >= REISERFS_LINK_MAX) { in reiserfs_link()
1224 reiserfs_write_unlock(dir->i_sb); in reiserfs_link()
1225 return -EMLINK; in reiserfs_link()
1231 retval = journal_begin(&th, dir->i_sb, jbegin_count); in reiserfs_link()
1234 reiserfs_write_unlock(dir->i_sb); in reiserfs_link()
1240 reiserfs_add_entry(&th, dir, dentry->d_name.name, in reiserfs_link()
1241 dentry->d_name.len, inode, 1 /*visible */ ); in reiserfs_link()
1250 reiserfs_write_unlock(dir->i_sb); in reiserfs_link()
1260 reiserfs_write_unlock(dir->i_sb); in reiserfs_link()
1264 /* de contains information pointing to an entry which */
1266 struct reiserfs_dir_entry *de) in de_still_valid() argument
1268 struct reiserfs_dir_entry tmp = *de; in de_still_valid()
1273 if (tmp.de_namelen != len || memcmp(name, de->de_name, len)) in de_still_valid()
1279 struct reiserfs_dir_entry *de, in entry_points_to_object() argument
1282 if (!de_still_valid(name, len, de)) in entry_points_to_object()
1286 if (!de_visible(de->de_deh + de->de_entry_num)) in entry_points_to_object()
1287 reiserfs_panic(inode->i_sb, "vs-7042", in entry_points_to_object()
1288 "entry must be visible"); in entry_points_to_object()
1289 return (de->de_objectid == inode->i_ino) ? 1 : 0; in entry_points_to_object()
1292 /* this must be added hidden entry */ in entry_points_to_object()
1293 if (de_visible(de->de_deh + de->de_entry_num)) in entry_points_to_object()
1294 reiserfs_panic(NULL, "vs-7043", "entry must be visible"); in entry_points_to_object()
1300 static void set_ino_in_dir_entry(struct reiserfs_dir_entry *de, in set_ino_in_dir_entry() argument
1303 /* JDM These operations are endian safe - both are le */ in set_ino_in_dir_entry()
1304 de->de_deh[de->de_entry_num].deh_dir_id = key->k_dir_id; in set_ino_in_dir_entry()
1305 de->de_deh[de->de_entry_num].deh_objectid = key->k_objectid; in set_ino_in_dir_entry()
1331 return -EINVAL; in reiserfs_rename()
1345 4 * REISERFS_QUOTA_TRANS_BLOCKS(old_dir->i_sb); in reiserfs_rename()
1362 reiserfs_write_lock(old_dir->i_sb); in reiserfs_rename()
1364 reiserfs_find_entry(old_dir, old_dentry->d_name.name, in reiserfs_rename()
1365 old_dentry->d_name.len, &old_entry_path, in reiserfs_rename()
1369 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1370 return -EIO; in reiserfs_rename()
1373 if (retval != NAME_FOUND || old_de.de_objectid != old_inode->i_ino) { in reiserfs_rename()
1374 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1375 return -ENOENT; in reiserfs_rename()
1378 if (S_ISDIR(old_inode->i_mode)) { in reiserfs_rename()
1386 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1387 return -ENOTEMPTY; in reiserfs_rename()
1393 * directory is renamed, its parent directory will be in reiserfs_rename()
1403 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1404 return -EIO; in reiserfs_rename()
1407 /* inode number of .. must equal old_dir->i_ino */ in reiserfs_rename()
1408 if (dot_dot_de.de_objectid != old_dir->i_ino) { in reiserfs_rename()
1409 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1410 return -EIO; in reiserfs_rename()
1416 retval = journal_begin(&th, old_dir->i_sb, jbegin_count); in reiserfs_rename()
1418 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1424 reiserfs_add_entry(&th, new_dir, new_dentry->d_name.name, in reiserfs_rename()
1425 new_dentry->d_name.len, old_inode, 0); in reiserfs_rename()
1426 if (retval == -EEXIST) { in reiserfs_rename()
1428 reiserfs_panic(old_dir->i_sb, "vs-7050", in reiserfs_rename()
1433 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1455 search_by_entry_key(new_dir->i_sb, &old_de.de_entry_key, in reiserfs_rename()
1460 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1461 return -EIO; in reiserfs_rename()
1466 reiserfs_prepare_for_journal(old_inode->i_sb, old_de.de_bh, 1); in reiserfs_rename()
1471 reiserfs_find_entry(new_dir, new_dentry->d_name.name, in reiserfs_rename()
1472 new_dentry->d_name.len, &new_entry_path, in reiserfs_rename()
1484 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1485 return -EIO; in reiserfs_rename()
1490 reiserfs_prepare_for_journal(old_inode->i_sb, new_de.de_bh, 1); in reiserfs_rename()
1494 search_by_entry_key(new_dir->i_sb, in reiserfs_rename()
1502 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1503 return -EIO; in reiserfs_rename()
1508 reiserfs_prepare_for_journal(old_inode->i_sb, in reiserfs_rename()
1515 * should lock the buffers, yes? -Hans in reiserfs_rename()
1520 * have to be written to deal with multi-path in reiserfs_rename()
1521 * issues -chris in reiserfs_rename()
1524 * sanity checking before doing the rename - avoid races many in reiserfs_rename()
1525 * of the above checks could have scheduled. We have to be in reiserfs_rename()
1529 !entry_points_to_object(new_dentry->d_name.name, in reiserfs_rename()
1530 new_dentry->d_name.len, in reiserfs_rename()
1533 !entry_points_to_object(old_dentry->d_name.name, in reiserfs_rename()
1534 old_dentry->d_name.len, in reiserfs_rename()
1536 reiserfs_restore_prepared_buffer(old_inode->i_sb, in reiserfs_rename()
1538 reiserfs_restore_prepared_buffer(old_inode->i_sb, in reiserfs_rename()
1541 reiserfs_restore_prepared_buffer(old_inode-> in reiserfs_rename()
1551 reiserfs_restore_prepared_buffer(old_inode-> in reiserfs_rename()
1554 reiserfs_restore_prepared_buffer(old_inode-> in reiserfs_rename()
1557 reiserfs_restore_prepared_buffer(old_inode-> in reiserfs_rename()
1572 * ok, all the changes can be done in one fell swoop when we in reiserfs_rename()
1590 if (S_ISDIR(new_dentry_inode->i_mode)) { in reiserfs_rename()
1595 savelink = new_dentry_inode->i_nlink; in reiserfs_rename()
1603 if (S_ISDIR(old_inode->i_mode)) { in reiserfs_rename()
1611 /* old directory lost one link - ".. " of renamed directory */ in reiserfs_rename()
1623 * anybody, but it will panic if will not be able to find the in reiserfs_rename()
1629 reiserfs_error(old_dir->i_sb, "vs-7060", in reiserfs_rename()
1632 old_dir->i_size -= DEH_SIZE + old_de.de_entrylen; in reiserfs_rename()
1646 reiserfs_write_unlock(old_dir->i_sb); in reiserfs_rename()
1679 inode->i_flags |= S_PRIVATE; in reiserfs_init_priv_inode()
1680 inode->i_opflags &= ~IOP_XATTR; in reiserfs_init_priv_inode()
1682 if (S_ISREG(inode->i_mode)) in reiserfs_init_priv_inode()
1683 inode->i_op = &reiserfs_priv_file_inode_operations; in reiserfs_init_priv_inode()
1684 else if (S_ISDIR(inode->i_mode)) in reiserfs_init_priv_inode()
1685 inode->i_op = &reiserfs_priv_dir_inode_operations; in reiserfs_init_priv_inode()
1686 else if (S_ISLNK(inode->i_mode)) in reiserfs_init_priv_inode()
1687 inode->i_op = &reiserfs_priv_symlink_inode_operations; in reiserfs_init_priv_inode()
1689 inode->i_op = &reiserfs_priv_special_inode_operations; in reiserfs_init_priv_inode()