[PATCH] Extended attribute sharing and debug macro typo in 2.5.64

Andreas Gruenbacher (agruen@suse.de)
Fri, 7 Mar 2003 16:55:05 +0100


Hello Andrew,

[Oops, I mistyped your email address.]

Tony Dziedzic has found two bugs in the extended attributes code. Patches with
explanations are attached. Could you please fold this into one of your next
updates?

Thanks,
Andreas.

------------------------------------------------------------------------------
Extended attribute sharing on ext2/ext3 not working

The mb_cache_entry_insert function constantly returns an -EBUSY error
instead of 0, which causes the xattr cache that is needed by the xattr
sharing mechanism on ext2/ext3 to not share anything. This patch fixes
the problem. (It is possible that after applying this fix we will hit
bugs in code that wasn't used before.)

--- linux-2.5.64.orig/fs/mbcache.c 2003-03-07 16:24:07.000000000 +0100
+++ linux-2.5.64/fs/mbcache.c 2003-03-07 16:24:11.000000000 +0100
@@ -433,6 +433,7 @@
list_add(&ce->e_indexes[n].o_list,
&cache->c_indexes_hash[n][bucket]);
}
+ error = 0;
out:
spin_unlock(&mb_cache_spinlock);
return error;
Extended attributes debug macro oops

------------------------------------------------------------------------------
Oops in one of the xattr debug statements: The old_bh variable is NULL
if an inode that previously had no EA's assigned would share an EA block
with another inode. (This was hidden by the xattr sharing bug).

--- linux-2.5.64.orig/fs/ext2/xattr.c 2003-03-07 16:23:01.000000000 +0100
+++ linux-2.5.64/fs/ext2/xattr.c 2003-03-07 16:23:14.000000000 +0100
@@ -731,7 +731,7 @@
* The old block will be released after updating
* the inode.
*/
- ea_bdebug(old_bh, "reusing block %ld",
+ ea_bdebug(new_bh, "reusing block %ld",
new_bh->b_blocknr);

error = -EDQUOT;
--- linux-2.5.64.orig/fs/ext3/xattr.c 2003-03-07 16:22:55.000000000 +0100
+++ linux-2.5.64/fs/ext3/xattr.c 2003-03-07 16:23:21.000000000 +0100
@@ -732,7 +732,7 @@
* The old block will be released after updating
* the inode.
*/
- ea_bdebug(old_bh, "reusing block %ld",
+ ea_bdebug(new_bh, "reusing block %ld",
new_bh->b_blocknr);

error = -EDQUOT;

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