[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