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

Re: ext3+acl



Found it.  Looks like I was staring at the same problem yet again.
Looks like extended attributes need an extra two buffers reserved.
One for changing an attribute that already exists, and one for a newly
created attribute, on top of the two that we were reserving before.  (Just
in case the problem occurs with an extended attribute on a large file.)

These changes should be all that are needed in inode.c

	/* Notify-change transaction.  The maximum number of buffers
-	 * required is one. */
+	 * required is four. (inode and superblock if a largefile). */
+	 * (extended attributes sometimes need two for themselves, one for
+	 * changing reference count on an already used attribute, one for
+	 * adding a new attribute) */

-       handle = ext3_journal_start(inode, 1);
+       handle = ext3_journal_start(inode, 4);


On Mon, 18 Jun 2001, Eric Jarman wrote:

> Doing some heavier testing, I caught another assertion failure:
> journal_dirty_metadata in transaction.c @ 800
> bh->b_next_transaction == transaction
> 
> This is easily repeatable by copying lots and lots of little files into a
> directory with a default acl.  (kernel source works nicely)
> 
> backtrace in kdb goes through:
> journal_dirty_metadata
> ext3_set_ext_attr
> ext_attr_set
> acl_ea_set_inode
> notify_change
> sys_chmod
> 
> Only took a couple of minutes of file copying to set off the assert.
> Looks like it isn't as bugfree as I had hoped.
> 
> 
> 
> _______________________________________________
> Ext3-users mailing list
> Ext3-users redhat com
> https://listman.redhat.com/mailman/listinfo/ext3-users
> 






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