namei.c (a90714c150e3ce677c57a9dac3ab1ec342c75a95) namei.c (13723d00e374c2a6d6ccb5af6de965e89c3e1b01)
1/* -*- mode: c; c-basic-offset: 8; -*-
2 * vim: noexpandtab sw=8 ts=8 sts=0:
3 *
4 * namei.c
5 *
6 * Create and rename file, directory, symlinks
7 *
8 * Copyright (C) 2002, 2004 Oracle. All rights reserved.

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

356 if (S_ISDIR(mode)) {
357 status = ocfs2_fill_new_dir(osb, handle, dir, inode,
358 new_fe_bh, data_ac);
359 if (status < 0) {
360 mlog_errno(status);
361 goto leave;
362 }
363
1/* -*- mode: c; c-basic-offset: 8; -*-
2 * vim: noexpandtab sw=8 ts=8 sts=0:
3 *
4 * namei.c
5 *
6 * Create and rename file, directory, symlinks
7 *
8 * Copyright (C) 2002, 2004 Oracle. All rights reserved.

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

356 if (S_ISDIR(mode)) {
357 status = ocfs2_fill_new_dir(osb, handle, dir, inode,
358 new_fe_bh, data_ac);
359 if (status < 0) {
360 mlog_errno(status);
361 goto leave;
362 }
363
364 status = ocfs2_journal_access(handle, dir, parent_fe_bh,
365 OCFS2_JOURNAL_ACCESS_WRITE);
364 status = ocfs2_journal_access_di(handle, dir, parent_fe_bh,
365 OCFS2_JOURNAL_ACCESS_WRITE);
366 if (status < 0) {
367 mlog_errno(status);
368 goto leave;
369 }
370 le16_add_cpu(&dirfe->i_links_count, 1);
371 status = ocfs2_journal_dirty(handle, parent_fe_bh);
372 if (status < 0) {
373 mlog_errno(status);

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

488 *new_fe_bh = sb_getblk(osb->sb, fe_blkno);
489 if (!*new_fe_bh) {
490 status = -EIO;
491 mlog_errno(status);
492 goto leave;
493 }
494 ocfs2_set_new_buffer_uptodate(inode, *new_fe_bh);
495
366 if (status < 0) {
367 mlog_errno(status);
368 goto leave;
369 }
370 le16_add_cpu(&dirfe->i_links_count, 1);
371 status = ocfs2_journal_dirty(handle, parent_fe_bh);
372 if (status < 0) {
373 mlog_errno(status);

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

488 *new_fe_bh = sb_getblk(osb->sb, fe_blkno);
489 if (!*new_fe_bh) {
490 status = -EIO;
491 mlog_errno(status);
492 goto leave;
493 }
494 ocfs2_set_new_buffer_uptodate(inode, *new_fe_bh);
495
496 status = ocfs2_journal_access(handle, inode, *new_fe_bh,
497 OCFS2_JOURNAL_ACCESS_CREATE);
496 status = ocfs2_journal_access_di(handle, inode, *new_fe_bh,
497 OCFS2_JOURNAL_ACCESS_CREATE);
498 if (status < 0) {
499 mlog_errno(status);
500 goto leave;
501 }
502
503 fe = (struct ocfs2_dinode *) (*new_fe_bh)->b_data;
504 memset(fe, 0, osb->sb->s_blocksize);
505

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

659 handle = ocfs2_start_trans(osb, ocfs2_link_credits(osb->sb));
660 if (IS_ERR(handle)) {
661 err = PTR_ERR(handle);
662 handle = NULL;
663 mlog_errno(err);
664 goto out_unlock_inode;
665 }
666
498 if (status < 0) {
499 mlog_errno(status);
500 goto leave;
501 }
502
503 fe = (struct ocfs2_dinode *) (*new_fe_bh)->b_data;
504 memset(fe, 0, osb->sb->s_blocksize);
505

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

659 handle = ocfs2_start_trans(osb, ocfs2_link_credits(osb->sb));
660 if (IS_ERR(handle)) {
661 err = PTR_ERR(handle);
662 handle = NULL;
663 mlog_errno(err);
664 goto out_unlock_inode;
665 }
666
667 err = ocfs2_journal_access(handle, inode, fe_bh,
668 OCFS2_JOURNAL_ACCESS_WRITE);
667 err = ocfs2_journal_access_di(handle, inode, fe_bh,
668 OCFS2_JOURNAL_ACCESS_WRITE);
669 if (err < 0) {
670 mlog_errno(err);
671 goto out_commit;
672 }
673
674 inc_nlink(inode);
675 inode->i_ctime = CURRENT_TIME;
676 fe->i_links_count = cpu_to_le16(inode->i_nlink);

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

846 handle = ocfs2_start_trans(osb, ocfs2_unlink_credits(osb->sb));
847 if (IS_ERR(handle)) {
848 status = PTR_ERR(handle);
849 handle = NULL;
850 mlog_errno(status);
851 goto leave;
852 }
853
669 if (err < 0) {
670 mlog_errno(err);
671 goto out_commit;
672 }
673
674 inc_nlink(inode);
675 inode->i_ctime = CURRENT_TIME;
676 fe->i_links_count = cpu_to_le16(inode->i_nlink);

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

846 handle = ocfs2_start_trans(osb, ocfs2_unlink_credits(osb->sb));
847 if (IS_ERR(handle)) {
848 status = PTR_ERR(handle);
849 handle = NULL;
850 mlog_errno(status);
851 goto leave;
852 }
853
854 status = ocfs2_journal_access(handle, inode, fe_bh,
855 OCFS2_JOURNAL_ACCESS_WRITE);
854 status = ocfs2_journal_access_di(handle, inode, fe_bh,
855 OCFS2_JOURNAL_ACCESS_WRITE);
856 if (status < 0) {
857 mlog_errno(status);
858 goto leave;
859 }
860
861 fe = (struct ocfs2_dinode *) fe_bh->b_data;
862
863 if (inode_is_unlinkable(inode)) {

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

1260 if (new_de) {
1261 if (S_ISDIR(new_inode->i_mode)) {
1262 if (!ocfs2_empty_dir(new_inode) ||
1263 new_inode->i_nlink != 2) {
1264 status = -ENOTEMPTY;
1265 goto bail;
1266 }
1267 }
856 if (status < 0) {
857 mlog_errno(status);
858 goto leave;
859 }
860
861 fe = (struct ocfs2_dinode *) fe_bh->b_data;
862
863 if (inode_is_unlinkable(inode)) {

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

1260 if (new_de) {
1261 if (S_ISDIR(new_inode->i_mode)) {
1262 if (!ocfs2_empty_dir(new_inode) ||
1263 new_inode->i_nlink != 2) {
1264 status = -ENOTEMPTY;
1265 goto bail;
1266 }
1267 }
1268 status = ocfs2_journal_access(handle, new_inode, newfe_bh,
1269 OCFS2_JOURNAL_ACCESS_WRITE);
1268 status = ocfs2_journal_access_di(handle, new_inode, newfe_bh,
1269 OCFS2_JOURNAL_ACCESS_WRITE);
1270 if (status < 0) {
1271 mlog_errno(status);
1272 goto bail;
1273 }
1274
1275 if (S_ISDIR(new_inode->i_mode) ||
1276 (newfe->i_links_count == cpu_to_le16(1))){
1277 status = ocfs2_orphan_add(osb, handle, new_inode,

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

1307 status = ocfs2_add_entry(handle, new_dentry, old_inode,
1308 OCFS2_I(old_inode)->ip_blkno,
1309 new_dir_bh, insert_entry_bh);
1310 }
1311
1312 old_inode->i_ctime = CURRENT_TIME;
1313 mark_inode_dirty(old_inode);
1314
1270 if (status < 0) {
1271 mlog_errno(status);
1272 goto bail;
1273 }
1274
1275 if (S_ISDIR(new_inode->i_mode) ||
1276 (newfe->i_links_count == cpu_to_le16(1))){
1277 status = ocfs2_orphan_add(osb, handle, new_inode,

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

1307 status = ocfs2_add_entry(handle, new_dentry, old_inode,
1308 OCFS2_I(old_inode)->ip_blkno,
1309 new_dir_bh, insert_entry_bh);
1310 }
1311
1312 old_inode->i_ctime = CURRENT_TIME;
1313 mark_inode_dirty(old_inode);
1314
1315 status = ocfs2_journal_access(handle, old_inode, old_inode_bh,
1316 OCFS2_JOURNAL_ACCESS_WRITE);
1315 status = ocfs2_journal_access_di(handle, old_inode, old_inode_bh,
1316 OCFS2_JOURNAL_ACCESS_WRITE);
1317 if (status >= 0) {
1318 old_di = (struct ocfs2_dinode *) old_inode_bh->b_data;
1319
1320 old_di->i_ctime = cpu_to_le64(old_inode->i_ctime.tv_sec);
1321 old_di->i_ctime_nsec = cpu_to_le32(old_inode->i_ctime.tv_nsec);
1322
1323 status = ocfs2_journal_dirty(handle, old_inode_bh);
1324 if (status < 0)

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

1384 if (old_dir_nlink != old_dir->i_nlink) {
1385 if (!old_dir_bh) {
1386 mlog(ML_ERROR, "need to change nlink for old dir "
1387 "%llu from %d to %d but bh is NULL!\n",
1388 (unsigned long long)OCFS2_I(old_dir)->ip_blkno,
1389 (int)old_dir_nlink, old_dir->i_nlink);
1390 } else {
1391 struct ocfs2_dinode *fe;
1317 if (status >= 0) {
1318 old_di = (struct ocfs2_dinode *) old_inode_bh->b_data;
1319
1320 old_di->i_ctime = cpu_to_le64(old_inode->i_ctime.tv_sec);
1321 old_di->i_ctime_nsec = cpu_to_le32(old_inode->i_ctime.tv_nsec);
1322
1323 status = ocfs2_journal_dirty(handle, old_inode_bh);
1324 if (status < 0)

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

1384 if (old_dir_nlink != old_dir->i_nlink) {
1385 if (!old_dir_bh) {
1386 mlog(ML_ERROR, "need to change nlink for old dir "
1387 "%llu from %d to %d but bh is NULL!\n",
1388 (unsigned long long)OCFS2_I(old_dir)->ip_blkno,
1389 (int)old_dir_nlink, old_dir->i_nlink);
1390 } else {
1391 struct ocfs2_dinode *fe;
1392 status = ocfs2_journal_access(handle, old_dir,
1393 old_dir_bh,
1394 OCFS2_JOURNAL_ACCESS_WRITE);
1392 status = ocfs2_journal_access_di(handle, old_dir,
1393 old_dir_bh,
1394 OCFS2_JOURNAL_ACCESS_WRITE);
1395 fe = (struct ocfs2_dinode *) old_dir_bh->b_data;
1396 fe->i_links_count = cpu_to_le16(old_dir->i_nlink);
1397 status = ocfs2_journal_dirty(handle, old_dir_bh);
1398 }
1399 }
1400
1401 ocfs2_dentry_move(old_dentry, new_dentry, old_dir, new_dir);
1402 status = 0;

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

1893 mlog_entry("(inode->i_ino = %lu)\n", inode->i_ino);
1894
1895 status = ocfs2_read_inode_block(orphan_dir_inode, &orphan_dir_bh);
1896 if (status < 0) {
1897 mlog_errno(status);
1898 goto leave;
1899 }
1900
1395 fe = (struct ocfs2_dinode *) old_dir_bh->b_data;
1396 fe->i_links_count = cpu_to_le16(old_dir->i_nlink);
1397 status = ocfs2_journal_dirty(handle, old_dir_bh);
1398 }
1399 }
1400
1401 ocfs2_dentry_move(old_dentry, new_dentry, old_dir, new_dir);
1402 status = 0;

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

1893 mlog_entry("(inode->i_ino = %lu)\n", inode->i_ino);
1894
1895 status = ocfs2_read_inode_block(orphan_dir_inode, &orphan_dir_bh);
1896 if (status < 0) {
1897 mlog_errno(status);
1898 goto leave;
1899 }
1900
1901 status = ocfs2_journal_access(handle, orphan_dir_inode, orphan_dir_bh,
1902 OCFS2_JOURNAL_ACCESS_WRITE);
1901 status = ocfs2_journal_access_di(handle, orphan_dir_inode, orphan_dir_bh,
1902 OCFS2_JOURNAL_ACCESS_WRITE);
1903 if (status < 0) {
1904 mlog_errno(status);
1905 goto leave;
1906 }
1907
1908 /* we're a cluster, and nlink can change on disk from
1909 * underneath us... */
1910 orphan_fe = (struct ocfs2_dinode *) orphan_dir_bh->b_data;

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

1981 /* remove it from the orphan directory */
1982 status = ocfs2_delete_entry(handle, orphan_dir_inode, target_de,
1983 target_de_bh);
1984 if (status < 0) {
1985 mlog_errno(status);
1986 goto leave;
1987 }
1988
1903 if (status < 0) {
1904 mlog_errno(status);
1905 goto leave;
1906 }
1907
1908 /* we're a cluster, and nlink can change on disk from
1909 * underneath us... */
1910 orphan_fe = (struct ocfs2_dinode *) orphan_dir_bh->b_data;

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

1981 /* remove it from the orphan directory */
1982 status = ocfs2_delete_entry(handle, orphan_dir_inode, target_de,
1983 target_de_bh);
1984 if (status < 0) {
1985 mlog_errno(status);
1986 goto leave;
1987 }
1988
1989 status = ocfs2_journal_access(handle,orphan_dir_inode, orphan_dir_bh,
1990 OCFS2_JOURNAL_ACCESS_WRITE);
1989 status = ocfs2_journal_access_di(handle,orphan_dir_inode, orphan_dir_bh,
1990 OCFS2_JOURNAL_ACCESS_WRITE);
1991 if (status < 0) {
1992 mlog_errno(status);
1993 goto leave;
1994 }
1995
1996 /* do the i_nlink dance! :) */
1997 orphan_fe = (struct ocfs2_dinode *) orphan_dir_bh->b_data;
1998 if (S_ISDIR(inode->i_mode))

--- 34 unchanged lines hidden ---
1991 if (status < 0) {
1992 mlog_errno(status);
1993 goto leave;
1994 }
1995
1996 /* do the i_nlink dance! :) */
1997 orphan_fe = (struct ocfs2_dinode *) orphan_dir_bh->b_data;
1998 if (S_ISDIR(inode->i_mode))

--- 34 unchanged lines hidden ---