From: Hugh Dickins When loop restricts underlying file's allocation mask to avoid deadlock, it unintentionally masks out its highmem capability, making failures at the underlying level much more likely. 25-akpm/drivers/block/loop.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/block/loop.c~loop-01-use-highmem drivers/block/loop.c --- 25/drivers/block/loop.c~loop-01-use-highmem Tue Jun 10 12:54:19 2003 +++ 25-akpm/drivers/block/loop.c Tue Jun 10 12:54:19 2003 @@ -714,7 +714,7 @@ static int loop_set_fd(struct loop_devic goto out_putf; } lo->old_gfp_mask = inode->i_mapping->gfp_mask; - inode->i_mapping->gfp_mask = GFP_NOIO; + inode->i_mapping->gfp_mask &= ~(__GFP_IO|__GFP_FS); set_blocksize(bdev, lo_blocksize); _