Commit f6da87ca authored by Andrew Morton's avatar Andrew Morton Committed by James Bottomley

[PATCH] Extended attribute sharing and debug macro typo fixes

Patch from Andreas Gruenbacher <agruen@suse.de>

Tony Dziedzic has found two bugs in the extended attributes code. Patches with
explanations are attached.

1: 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.)

2: 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).
parent 3ed88a51
......@@ -731,7 +731,7 @@ ext2_xattr_set2(struct inode *inode, struct buffer_head *old_bh,
* 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;
......
......@@ -732,7 +732,7 @@ ext3_xattr_set_handle2(handle_t *handle, struct inode *inode,
* 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;
......
......@@ -433,6 +433,7 @@ mb_cache_entry_insert(struct mb_cache_entry *ce, struct block_device *bdev,
list_add(&ce->e_indexes[n].o_list,
&cache->c_indexes_hash[n][bucket]);
}
error = 0;
out:
spin_unlock(&mb_cache_spinlock);
return error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment