>>>Andrew, >>> >>>Fixed both comments from Al Viro (thanks, Al): >>>- should have a separate helper >>>- should pass 0 instead of GFP_KERNEL in page_symlink() >> >>> >>>+ page = find_or_create_page(mapping, 0, >>>+ mapping_gfp_mask(mapping) | gfp_mask); >> >> >> >>this does not work; GFP_NOFS has a bit *LESS* than GFP_KERNEL, not a bit >>more. As such a | operation isn't going to be useful.... >> >>(So I think that while Al's intention was good, the implication of it >>isn't ;) > > > Yup. page_symlink() needs to pass in mapping_gfp_mask(inode->i_mapping) > and ext3 needs to pass in, umm, > > mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS > > or > > GFP_NOFS|__GFP_HIGHMEM. > > preferably the former I guess. This looks reasonable. See the patch attached. Thanks, Kirill