[LU-14316] lfs: using old ioctl(LL_IOC_LOV_GETSTRIPE), use llapi_layout_get_by_path() Created: 10/Jan/21 Updated: 13/Apr/22 |
|
| Status: | Open |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | Andreas Dilger | Assignee: | WC Triage |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||||||||||||||
| Severity: | 3 | ||||||||||||||||||||
| Rank (Obsolete): | 9223372036854775807 | ||||||||||||||||||||
| Description |
|
The first time "lfs setstripe" is used after mount, there is always a message printed on the console: Lustre: lfs: using old ioctl(LL_IOC_LOV_GETSTRIPE) on [0x200000402:0x2:0x0], use llapi_layout_get_by_path() We shouldn't be using an old interface that prints a warning message for a standard command. I haven't totally tracked down the callpath(s) that generate this message, but it is probably from the ll_file_getstripe() at the end of ll_lov_setstripe(). It may be enough to not print the message if size != 0, and pass the size of the ioctl buffer by getting it via _IOC_SIZE(cmd) when LL_IOC_LOV_GETSTRIPE_NEW is called, and start using LL_IOC_LOV_GETSTRIPE_NEW from lfs.c? |
| Comments |
| Comment by John Hammond [ 11/Jan/21 ] |
|
> I haven't totally tracked down the callpath(s) that generate this message, but it is probably from the ll_file_getstripe() at the end of ll_lov_setstripe(). Correctamundo. I think we should remove the message. Printing to the dmesg it is unlikely to have the intended effect on ADIO. I'm not sure if I follow what you mean about _IOC_SIZE(cmd). For _IOC_SIZE(LL_IOC_LOV_GETSTRIPE) == sizeof(long) and _IOC_SIZE(LL_IOC_LOV_GETSTRIPE_NEW) == sizeof(struct lov_user_md). Note that we should avoid naming new things BLAH_BLAH_NEW and call them BLAH_BLAH_v2 instead. (And definitely avoid renaming things from BLAH_BLAH to BLAH_BLAH_OLD.) We should also not depend on #defined types like lov_user_md when defining ioctls. Since if we change lov_user_md then the ioctl silently changes. (I'm not convinced that we would notice right away if we did that.) LL_IOC_LOV_GETSTRIPE_NEW should be defined using struct lov_used_md_v1 explicitly. LL_IOC_LOV_GETSTRIPE_NEW and LL_IOC_LOV_SETSTRIPE_NEW are not used in our utilities. I don't think we have ever defined how large the buffer should actually be. We could just declare now that the buffer should be 65536 bytes. One good simplification would be to stop calling ll_file_getstripe() at the end of ll_lov_setstripe(). I think we did this before and then undid it. Perhaps we could do this whenever LL_IOC_LOV_SETSTRIPE_NEW is used and switch lfs and llapi to using LL_IOC_LOV_SETSTRIPE_NEW. |
| Comment by Gerrit Updater [ 02/Feb/21 ] |
|
|
| Comment by Gerrit Updater [ 05/Feb/21 ] |
|
Andreas Dilger (adilger@whamcloud.com) uploaded a new patch: https://review.whamcloud.com/41427 |
| Comment by Gerrit Updater [ 08/Feb/21 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/41427/ |
| Comment by Gerrit Updater [ 25/Mar/21 ] |
|
Olaf Faaland-LLNL (faaland1@llnl.gov) uploaded a new patch: https://review.whamcloud.com/43103 |
| Comment by Gerrit Updater [ 05/May/21 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/43103/ |
| Comment by Gerrit Updater [ 12/Apr/22 ] |
|
"Andreas Dilger <adilger@whamcloud.com>" uploaded a new patch: https://review.whamcloud.com/47053 |