Re: [PATCH v2 06/11] don't put symlink bodies in pagecache into highmem

From: Al Viro
Date: Thu Jan 14 2016 - 19:05:19 EST


On Thu, Jan 14, 2016 at 03:58:22PM -0800, Linus Torvalds wrote:
> On Thu, Jan 14, 2016 at 2:25 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
> >
> > For one thing, we'll lose RCU ->get_link() for those.
>
> Why couldn't we just do that in the RCU walker? kmap should be fine..

In map_new_virtual():
__set_current_state(TASK_UNINTERRUPTIBLE);
add_wait_queue(pkmap_map_wait, &wait);
unlock_kmap();
schedule();
remove_wait_queue(pkmap_map_wait, &wait);
lock_kmap();
IOW, not in RCU mode ;-/

> That said, as long as you think it's ok now, I guess I don't care.
> Having some sanity testing in __add_to_page_cache_locked might be a
> good safety net.

That's better as a separate commit, IMO. The thing I'm not sure about is
whether we want a BUG() in there - VM_WARN_ON(), perhaps? OTOH, we do
have VM_BUG_ON_PAGE() in the same place already...