[OpenAFS-devel] having trouble compiling openafs kernel module
in kernel 4.5
Michael Laß
lass@mail.upb.de
Wed, 06 Apr 2016 19:59:01 +0200
Hi,
Am Mittwoch, den 06.04.2016, 13:24 -0400 schrieb Gary Gatling:
> Here is my build log:
>
> http://fpaste.org/350505/99628291/
>
> This is in fedora 24 alpha version which will be released in June.
>
> It seems to have problems with symlinks somehow.
>
> Any one have any ideas about how it could be patched? The kernel
> version is 4.5.0-302.fc24.x86_64.
I think the corresponding changes in the kernel
are fceef393a538134f03b778c5d2519e670269342f
and 6b2553918d8b4e6de9853fd6315bec7271a2e592.
Probably most helpful are the additional notes
in Documentation/filesystems/porting:
> git diff v4.4..v4.5 -- Documentation/filesystems/porting
> diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting
> index f24d1b8..f1b87d8 100644
> --- a/Documentation/filesystems/porting
> +++ b/Documentation/filesystems/porting
> @@ -504,3 +504,24 @@ in your dentry operations instead.
>Â Â [mandatory]
>Â Â Â Â Â Â Â Â Â __fd_install() & fd_install() can now sleep. Callers should not
>Â Â Â Â Â Â Â Â Â hold a spinlock or other resources that do not allow a schedule.
> +--
> +[mandatory]
> +Â Â Â Â Â Â Â any symlink that might use page_follow_link_light/page_put_link() must
> +Â Â Â Â Â Â Â have inode_nohighmem(inode) called before anything might start playing with
> +       its pagecache.  No highmem pages should end up in the pagecache of such
> +       symlinks.  That includes any preseeding that might be done during symlink
> +       creation.  __page_symlink() will honour the mapping gfp flags, so once
> +Â Â Â Â Â Â Â you've done inode_nohighmem() it's safe to use, but if you allocate and
> +Â Â Â Â Â Â Â insert the page manually, make sure to use the right gfp flags.
> +--
> +[mandatory]
> +Â Â Â Â Â Â Â ->follow_link() is replaced with ->get_link(); same API, except that
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â * ->get_link() gets inode as a separate argument
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â * ->get_link() may be called in RCU mode - in that case NULL
> +Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â dentry is passed
> +--
> +[mandatory]
> +Â Â Â Â Â Â Â ->get_link() gets struct delayed_call *done now, and should do
> +Â Â Â Â Â Â Â set_delayed_call() where it used to set *cookie.
> +Â Â Â Â Â Â Â ->put_link() is gone - just give the destructor to set_delayed_call()
> +Â Â Â Â Â Â Â in ->get_link().
I only looked into this very briefly and I'm not working on
corresponding patches.
Cheers,
Michael