Re: Linux 2.4.33-rc1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 17 Jun 2006 07:13:57 +0200, Willy Tarreau <[email protected]> wrote:

>Hi Grant,
>
>On Sat, Jun 17, 2006 at 09:24:02AM +1000, Grant Coady wrote:
>> On Sat, 17 Jun 2006 00:38:10 +0200, "Michal Piotrowski" <[email protected]> wrote:
>> 
>> >Can you revert 42cce987d63d3048595b8b00d74be786707d5e5d commit?
>> 
>> Only if you point me at the patch, that string seems not to be 
>> in the patch-2.4.33-rc1.gz file.
>
>First, revert this one :
>
>  http://kernel.org/git/?p=linux/kernel/git/marcelo/linux-2.4.git;a=commitdiff_plain;h=efc95599c0261dd7ab3a1d9071024ca140b4c644;hp=6601095e2de35f00325a33c8be6b548f81fe76d5
>
>--- a/fs/namei.c
>+++ b/fs/namei.c
>@@ -1479,19 +1479,20 @@ int vfs_unlink(struct inode *dir, struct
> {
> 	int error;
> 
>-	double_down(&dir->i_zombie, &dentry->d_inode->i_zombie);
> 	error = may_delete(dir, dentry, 0);
>-	if (!error) {
>-		error = -EPERM;
>-		if (dir->i_op && dir->i_op->unlink) {
>-			DQUOT_INIT(dir);
>-			if (d_mountpoint(dentry))
>-				error = -EBUSY;
>-			else {
>-				lock_kernel();
>-				error = dir->i_op->unlink(dir, dentry);
>-				unlock_kernel();
>-			}
>+	if (error)
>+		return error;
>+
>+	double_down(&dir->i_zombie, &dentry->d_inode->i_zombie);
>+	error = -EPERM;
>+	if (dir->i_op && dir->i_op->unlink) {
>+		DQUOT_INIT(dir);
>+		if (d_mountpoint(dentry))
>+			error = -EBUSY;
>+		else {
>+			lock_kernel();
>+			error = dir->i_op->unlink(dir, dentry);
>+			unlock_kernel();
> 		}
> 	}
> 	double_up(&dir->i_zombie, &dentry->d_inode->i_zombie);
>
>
>It will put you back to the state where all your machines hanged at boot
>with -hf32.5, then revert this one :
>
>  http://kernel.org/git/?p=linux/kernel/git/marcelo/linux-2.4.git;a=commitdiff_plain;h=f41e0ce901260d3d1ae5bd8bae34266891b4a65d;hp=925c7ce0a2d9a676cd8e4a2baf411b23cf6762d6
>
>--- a/fs/namei.c
>+++ b/fs/namei.c
>@@ -1479,7 +1479,7 @@ int vfs_unlink(struct inode *dir, struct
> {
> 	int error;
> 
>-	down(&dir->i_zombie);
>+	double_down(&dir->i_zombie, &dentry->d_inode->i_zombie);
> 	error = may_delete(dir, dentry, 0);
> 	if (!error) {
> 		error = -EPERM;
>@@ -1491,14 +1491,14 @@ int vfs_unlink(struct inode *dir, struct
> 				lock_kernel();
> 				error = dir->i_op->unlink(dir, dentry);
> 				unlock_kernel();
>-				if (!error)
>-					d_delete(dentry);
> 			}
> 		}
> 	}
>-	up(&dir->i_zombie);
>-	if (!error)
>+	double_up(&dir->i_zombie, &dentry->d_inode->i_zombie);
>+	if (!error) {
>+		d_delete(dentry);
> 		inode_dir_notify(dir, DN_DELETE);
>+	}
> 	return error;
> }
> 
>@@ -1607,18 +1607,19 @@ int vfs_link(struct dentry *old_dentry, 
> 	struct inode *inode;
> 	int error;
> 
>-	down(&dir->i_zombie);
> 	error = -ENOENT;
> 	inode = old_dentry->d_inode;
> 	if (!inode)
>-		goto exit_lock;
>-
>-	error = may_create(dir, new_dentry);
>-	if (error)
>-		goto exit_lock;
>+		goto exit;
> 
> 	error = -EXDEV;
> 	if (dir->i_dev != inode->i_dev)
>+		goto exit;
>+
>+	double_down(&dir->i_zombie, &old_dentry->d_inode->i_zombie);
>+
>+	error = may_create(dir, new_dentry);
>+	if (error)
> 		goto exit_lock;
> 
> 	/*
>@@ -1636,9 +1637,10 @@ int vfs_link(struct dentry *old_dentry, 
> 	unlock_kernel();
> 
> exit_lock:
>-	up(&dir->i_zombie);
>+	double_up(&dir->i_zombie, &old_dentry->d_inode->i_zombie);
> 	if (!error)
> 		inode_dir_notify(dir, DN_CREATE);
>+exit:
> 	return error;
> }
> 
>
>And you will have something equivalent to -hf32.6 (you remember, I only
>reverted the fix in -hf32.6, and did not merge Marcelo's fix for the fix).
>Then we will have to decide whether we can fix it again or revert it
>completely. I would have liked to Cc: Vadim Egorov, but I cannot find his
>email.
>

Hi Willy, this worked.  

Grant.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux