]> git.proxmox.com Git - mirror_zfs.git/blobdiff - module/zfs/zfs_vnops.c
Fix mmap / libaio deadlock
[mirror_zfs.git] / module / zfs / zfs_vnops.c
index a2d7d7b24da6ff89bb4104916b01a249a555f7fd..14caa80e542f3a0108c355cc45466bbafce2207b 100644 (file)
@@ -400,6 +400,7 @@ mappedread(struct inode *ip, int nbytes, uio_t *uio)
                pp = find_lock_page(mp, start >> PAGE_SHIFT);
                if (pp) {
                        ASSERT(PageUptodate(pp));
+                       unlock_page(pp);
 
                        pb = kmap(pp);
                        error = uiomove(pb + off, bytes, UIO_READ, uio);
@@ -409,7 +410,6 @@ mappedread(struct inode *ip, int nbytes, uio_t *uio)
                                flush_dcache_page(pp);
 
                        mark_page_accessed(pp);
-                       unlock_page(pp);
                        put_page(pp);
                } else {
                        error = dmu_read_uio_dbuf(sa_get_db(zp->z_sa_hdl),