[LU-4944] build fails with latest zfs source Created: 23/Apr/14 Updated: 06/May/14 Resolved: 06/May/14 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.6.0 |
| Fix Version/s: | Lustre 2.6.0 |
| Type: | Bug | Priority: | Critical |
| Reporter: | Bob Glossman (Inactive) | Assignee: | Alex Zhuravlev |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | zfs | ||
| Issue Links: |
|
||||||||
| Severity: | 3 | ||||||||
| Rank (Obsolete): | 13683 | ||||||||
| Description |
|
This looks a bit similar to I can no longer build lustre against the latest upstream zfs source pulled from the master branch of github.com/behlendorf/zfs.git. The internal API dsl_sync_task_do_nowait() used in osd-zfs code no longer exists. This is not currently a problem in our build and test framework where builds are done against an earlier, fixed, and frozen version of zfs source. It will become a problem the next time we sync up to the latest upstream zfs version. |
| Comments |
| Comment by Andreas Dilger [ 23/Apr/14 ] |
|
It really should be our goal to have the Lustre 2.6.0 release build with the ZFS 0.6.3 code (or as close as we can get). I thought dsl_sync_task_do_nowait() was added for Lustre's use, but I don't know the details of why it was then removed. Maybe Brian can comment on the API change? The other question is whether 0.6.3 will be released within the next month or so? If yes, then we should shift our build/test over to an intermediate tag on the ZFS master in anticipation of that release, instead of sticking with the existing 0.6.2 release. |
| Comment by Bob Glossman (Inactive) [ 23/Apr/14 ] |
|
there does appear to be a replacement API, dsl_sync_task_nowait(). However the params it's called with don't look identical. I think we need some expert mods to adapt to the new API. If we want to be flexible and do it both ways we probably need some autoconf support to detect & use the correct API for the zfs version built with. |
| Comment by Brian Behlendorf [ 23/Apr/14 ] |
|
As part of the synctask restructuring done upstream in Illumos dsl_sync_task_do_nowait() was replaced by dsl_sync_task_nowait(). The updated function removes the 'checkfunc' argument but since this wasn't used by Lustre it should be straight forward to use the new API. Adding a configure test to check for the symbol should be easy enough. Unfortunately, we can't trivially add the interface back to ZFS side because the callbacks were updated to share the same passed argument. The previous interface allowed you to pass a different argument for the checkfunc and the syncfunc. Sorry guys. |
| Comment by Keith Mannthey (Inactive) [ 23/Apr/14 ] |
|
Brian or others what is the Latest ZFS Commit that should work without Lustre Changes? |
| Comment by Brian Behlendorf [ 23/Apr/14 ] |
|
These changes were merged just a few commits after 0.6.2 was tagged. They've been in the ZFS tree since early September 2013. *13fe019 Illumos #3464 |
| Comment by Bob Glossman (Inactive) [ 23/Apr/14 ] |
|
as an interim step I've worked out a patch that replaces dsl_sync_task_do_nowait() with dsl_sync_task_nowait() in osd-zfs code. It will be a bit more work to add a configure test, but this temporary patch will at least allow builds to complete. Not at all production worthy (IMHO). |
| Comment by Alex Zhuravlev [ 24/Apr/14 ] |
| Comment by Jodi Levi (Inactive) [ 06/May/14 ] |
|
Patch landed to Master. |