On Tue, 10 Jul 2007 16:32:47 -0700 Andrew Morton [off-list ref] wrote:
quoted
+ brelse(bh);
+ up_write(&EXT4_I(inode)->xattr_sem);
+ return error;
+}
+
We're doing GFP_KERNEL memory allocations while holding xattr_sem. This
can cause the VM to reenter the filesystem, perhaps taking i_mutex and/or
i_truncate_sem and/or journal_start() (I forget whether this still
happens). Have we checked whether this can occur and if so, whether we are
OK from a lock ranking POV? Bear in mind that journalled-data mode is more
complex in this regard.
I notice that everyone carefully avoided addressing this ;)
Oh well, hopefully people are testing with lockdep enabled. As long
as the fs is put under extreme memory pressure, most bugs should be reported.
Except lockdep doesn't know about journal_start(), which has ranking
requirements similar to a semaphore. Nor does it know about lock_page().
We already have hard-to-hit but deadlockable bugs in this area.