Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 42374
b: refs/heads/master
c: 30a4f5e
h: refs/heads/master
v: v3
  • Loading branch information
Mark Fasheh committed Dec 2, 2006
1 parent f73c337 commit ea7047a
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5098c27bb8cd89e30d909ac9d76e305d334dadaf
refs/heads/master: 30a4f5e86bc7bc388ce808117e7722706f739602
25 changes: 12 additions & 13 deletions trunk/fs/ocfs2/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -813,6 +813,7 @@ static int ocfs2_unlink(struct inode *dir,
struct dentry *dentry)
{
int status;
int child_locked = 0;
struct inode *inode = dentry->d_inode;
struct inode *orphan_dir = NULL;
struct ocfs2_super *osb = OCFS2_SB(dir->i_sb);
Expand All @@ -835,22 +836,14 @@ static int ocfs2_unlink(struct inode *dir,

if (inode == osb->root_inode) {
mlog(0, "Cannot delete the root directory\n");
status = -EPERM;
goto leave;
}

handle = ocfs2_alloc_handle(osb);
if (handle == NULL) {
status = -ENOMEM;
mlog_errno(status);
goto leave;
return -EPERM;
}

status = ocfs2_meta_lock(dir, handle, &parent_node_bh, 1);
status = ocfs2_meta_lock(dir, NULL, &parent_node_bh, 1);
if (status < 0) {
if (status != -ENOENT)
mlog_errno(status);
goto leave;
return status;
}

status = ocfs2_find_files_on_disk(dentry->d_name.name,
Expand All @@ -871,12 +864,13 @@ static int ocfs2_unlink(struct inode *dir,
goto leave;
}

status = ocfs2_meta_lock(inode, handle, &fe_bh, 1);
status = ocfs2_meta_lock(inode, NULL, &fe_bh, 1);
if (status < 0) {
if (status != -ENOENT)
mlog_errno(status);
goto leave;
}
child_locked = 1;

if (S_ISDIR(inode->i_mode)) {
if (!ocfs2_empty_dir(inode)) {
Expand Down Expand Up @@ -906,7 +900,7 @@ static int ocfs2_unlink(struct inode *dir,
}
}

handle = ocfs2_start_trans(osb, handle, OCFS2_UNLINK_CREDITS);
handle = ocfs2_start_trans(osb, NULL, OCFS2_UNLINK_CREDITS);
if (IS_ERR(handle)) {
status = PTR_ERR(handle);
handle = NULL;
Expand Down Expand Up @@ -964,6 +958,11 @@ static int ocfs2_unlink(struct inode *dir,
if (handle)
ocfs2_commit_trans(handle);

if (child_locked)
ocfs2_meta_unlock(inode, 1);

ocfs2_meta_unlock(dir, 1);

if (orphan_dir) {
/* This was locked for us in ocfs2_prepare_orphan_dir() */
ocfs2_meta_unlock(orphan_dir, 1);
Expand Down

0 comments on commit ea7047a

Please sign in to comment.