namei.c (6a797d2737838906f2ea0a31686e87c3151e21ca) namei.c (e2b911c53584a92266943f3b7f2cdbc19c1a4e80)
1/*
2 * linux/fs/ext4/namei.c
3 *
4 * Copyright (C) 1992, 1993, 1994, 1995
5 * Remy Card (card@masi.ibp.fr)
6 * Laboratoire MASI - Institut Blaise Pascal
7 * Universite Pierre et Marie Curie (Paris VI)
8 *

--- 2104 unchanged lines hidden (view full) ---

2113 goto out;
2114 }
2115 retval = add_dirent_to_buf(handle, &fname, dir, inode,
2116 NULL, bh);
2117 if (retval != -ENOSPC)
2118 goto out;
2119
2120 if (blocks == 1 && !dx_fallback &&
1/*
2 * linux/fs/ext4/namei.c
3 *
4 * Copyright (C) 1992, 1993, 1994, 1995
5 * Remy Card (card@masi.ibp.fr)
6 * Laboratoire MASI - Institut Blaise Pascal
7 * Universite Pierre et Marie Curie (Paris VI)
8 *

--- 2104 unchanged lines hidden (view full) ---

2113 goto out;
2114 }
2115 retval = add_dirent_to_buf(handle, &fname, dir, inode,
2116 NULL, bh);
2117 if (retval != -ENOSPC)
2118 goto out;
2119
2120 if (blocks == 1 && !dx_fallback &&
2121 EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_DIR_INDEX)) {
2121 ext4_has_feature_dir_index(sb)) {
2122 retval = make_indexed_dir(handle, &fname, dentry,
2123 inode, bh);
2124 bh = NULL; /* make_indexed_dir releases bh */
2125 goto out;
2126 }
2127 brelse(bh);
2128 }
2129 bh = ext4_append(handle, dir, &block);

--- 253 unchanged lines hidden (view full) ---

2383 */
2384static void ext4_inc_count(handle_t *handle, struct inode *inode)
2385{
2386 inc_nlink(inode);
2387 if (is_dx(inode) && inode->i_nlink > 1) {
2388 /* limit is 16-bit i_links_count */
2389 if (inode->i_nlink >= EXT4_LINK_MAX || inode->i_nlink == 2) {
2390 set_nlink(inode, 1);
2122 retval = make_indexed_dir(handle, &fname, dentry,
2123 inode, bh);
2124 bh = NULL; /* make_indexed_dir releases bh */
2125 goto out;
2126 }
2127 brelse(bh);
2128 }
2129 bh = ext4_append(handle, dir, &block);

--- 253 unchanged lines hidden (view full) ---

2383 */
2384static void ext4_inc_count(handle_t *handle, struct inode *inode)
2385{
2386 inc_nlink(inode);
2387 if (is_dx(inode) && inode->i_nlink > 1) {
2388 /* limit is 16-bit i_links_count */
2389 if (inode->i_nlink >= EXT4_LINK_MAX || inode->i_nlink == 2) {
2390 set_nlink(inode, 1);
2391 EXT4_SET_RO_COMPAT_FEATURE(inode->i_sb,
2392 EXT4_FEATURE_RO_COMPAT_DIR_NLINK);
2391 ext4_set_feature_dir_nlink(inode->i_sb);
2393 }
2394 }
2395}
2396
2397/*
2398 * If a directory had nlink == 1, then we should let it be 1. This indicates
2399 * directory has >EXT4_LINK_MAX subdirs.
2400 */

--- 946 unchanged lines hidden (view full) ---

3347{
3348 int retval;
3349
3350 BUFFER_TRACE(ent->bh, "get write access");
3351 retval = ext4_journal_get_write_access(handle, ent->bh);
3352 if (retval)
3353 return retval;
3354 ent->de->inode = cpu_to_le32(ino);
2392 }
2393 }
2394}
2395
2396/*
2397 * If a directory had nlink == 1, then we should let it be 1. This indicates
2398 * directory has >EXT4_LINK_MAX subdirs.
2399 */

--- 946 unchanged lines hidden (view full) ---

3346{
3347 int retval;
3348
3349 BUFFER_TRACE(ent->bh, "get write access");
3350 retval = ext4_journal_get_write_access(handle, ent->bh);
3351 if (retval)
3352 return retval;
3353 ent->de->inode = cpu_to_le32(ino);
3355 if (EXT4_HAS_INCOMPAT_FEATURE(ent->dir->i_sb,
3356 EXT4_FEATURE_INCOMPAT_FILETYPE))
3354 if (ext4_has_feature_filetype(ent->dir->i_sb))
3357 ent->de->file_type = file_type;
3358 ent->dir->i_version++;
3359 ent->dir->i_ctime = ent->dir->i_mtime =
3360 ext4_current_time(ent->dir);
3361 ext4_mark_inode_dirty(handle, ent->dir);
3362 BUFFER_TRACE(ent->bh, "call ext4_handle_dirty_metadata");
3363 if (!ent->inlined) {
3364 retval = ext4_handle_dirty_dirent_node(handle,

--- 504 unchanged lines hidden ---
3355 ent->de->file_type = file_type;
3356 ent->dir->i_version++;
3357 ent->dir->i_ctime = ent->dir->i_mtime =
3358 ext4_current_time(ent->dir);
3359 ext4_mark_inode_dirty(handle, ent->dir);
3360 BUFFER_TRACE(ent->bh, "call ext4_handle_dirty_metadata");
3361 if (!ent->inlined) {
3362 retval = ext4_handle_dirty_dirent_node(handle,

--- 504 unchanged lines hidden ---