From 0c7f27e2872faf0776f6667196471dd4917f58b0 Mon Sep 17 00:00:00 2001 From: Mark Fasheh Date: Fri, 6 Oct 2006 11:54:33 -0700 Subject: [PATCH] --- yaml --- r: 42375 b: refs/heads/master c: 6d8fc40e63401be065b0aa98dfa4246deca04b8c h: refs/heads/master i: 42373: f73c3376fd3385ed66a32efdcab4924291c88c81 42371: 5449a26b201cbfe8b02f6e1101159120c5acf053 42367: 3c5adf12a7a027385d9aee9ca362c87304c12bf5 v: v3 --- [refs] | 2 +- trunk/fs/ocfs2/namei.c | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index b931b33c75d3..a7e7cbd41b2d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 30a4f5e86bc7bc388ce808117e7722706f739602 +refs/heads/master: 6d8fc40e63401be065b0aa98dfa4246deca04b8c diff --git a/trunk/fs/ocfs2/namei.c b/trunk/fs/ocfs2/namei.c index f64cff0ceed8..7e9da946c777 100644 --- a/trunk/fs/ocfs2/namei.c +++ b/trunk/fs/ocfs2/namei.c @@ -1603,19 +1603,12 @@ static int ocfs2_symlink(struct inode *dir, credits = ocfs2_calc_symlink_credits(sb); - handle = ocfs2_alloc_handle(osb); - if (handle == NULL) { - status = -ENOMEM; - mlog_errno(status); - goto bail; - } - /* lock the parent directory */ - status = ocfs2_meta_lock(dir, handle, &parent_fe_bh, 1); + status = ocfs2_meta_lock(dir, NULL, &parent_fe_bh, 1); if (status < 0) { if (status != -ENOENT) mlog_errno(status); - goto bail; + return status; } dirfe = (struct ocfs2_dinode *) parent_fe_bh->b_data; @@ -1638,6 +1631,13 @@ static int ocfs2_symlink(struct inode *dir, goto bail; } + handle = ocfs2_alloc_handle(osb); + if (handle == NULL) { + status = -ENOMEM; + mlog_errno(status); + goto bail; + } + status = ocfs2_reserve_new_inode(osb, handle, &inode_ac); if (status < 0) { if (status != -ENOSPC) @@ -1734,6 +1734,9 @@ static int ocfs2_symlink(struct inode *dir, bail: if (handle) ocfs2_commit_trans(handle); + + ocfs2_meta_unlock(dir, 1); + if (new_fe_bh) brelse(new_fe_bh); if (parent_fe_bh)