فهرست منبع

ocfs2: don't pass handle to ocfs2_meta_lock() in ocfs2_mknod()

Take and drop the locks directly.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Mark Fasheh 18 سال پیش
والد
کامیت
e3a8213859
1فایلهای تغییر یافته به همراه9 افزوده شده و 7 حذف شده
  1. 9 7
      fs/ocfs2/namei.c

+ 9 - 7
fs/ocfs2/namei.c

@@ -333,6 +333,13 @@ static int ocfs2_mknod(struct inode *dir,
 	/* get our super block */
 	osb = OCFS2_SB(dir->i_sb);
 
+	status = ocfs2_meta_lock(dir, NULL, &parent_fe_bh, 1);
+	if (status < 0) {
+		if (status != -ENOENT)
+			mlog_errno(status);
+		return status;
+	}
+
 	handle = ocfs2_alloc_handle(osb);
 	if (handle == NULL) {
 		status = -ENOMEM;
@@ -340,13 +347,6 @@ static int ocfs2_mknod(struct inode *dir,
 		goto leave;
 	}
 
-	status = ocfs2_meta_lock(dir, handle, &parent_fe_bh, 1);
-	if (status < 0) {
-		if (status != -ENOENT)
-			mlog_errno(status);
-		goto leave;
-	}
-
 	if (S_ISDIR(mode) && (dir->i_nlink >= OCFS2_LINK_MAX)) {
 		status = -EMLINK;
 		goto leave;
@@ -455,6 +455,8 @@ leave:
 	if (handle)
 		ocfs2_commit_trans(handle);
 
+	ocfs2_meta_unlock(dir, 1);
+
 	if (status == -ENOSPC)
 		mlog(0, "Disk is full\n");