aufs: bugfix mmap_sem 1/4, release [fdi]i_rwsem in file I/O
mmap(2) acquires mm->mmap_sem before ->mmap(), and aufs mmap() acquires
aufs rwsem. On the other hand, aufs file I/O functions including
->read(), ->write() acquire aufs rwsem and then mmap_sem.
This AB-BA problem will cause deadlock.
By this commit, aufs file I/O functions release aufs rwsem before
mmap_sem except si_rwsem. Holding si_rwsem is necessary to protect the
operation from aufs branch management.
Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp>
(cherry picked from commit
0a118fbd1867734fbe1cf1a54907b0150fe9e1b4)