[LU-13322] touch symbol link through lustre/.fid/$FID would fail Created: 04/Mar/20 Updated: 04/Mar/20 |
|
| Status: | Open |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Li Xi | Assignee: | WC Triage |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
2.12 |
||
| Attachments: |
|
| Severity: | 3 |
| Rank (Obsolete): | 9223372036854775807 |
| Description |
|
The problem is 100% reproducable:
On the client side, the error logs are: 00000002:00000001:1.0:1583284421.042097:0:19386:0:(mdc_locks.c:1001:mdc_finish_intent_lock()) Process entered 00000002:00000001:1.0:1583284421.042098:0:19386:0:(mdc_locks.c:1028:mdc_finish_intent_lock()) Process leaving via out (rc=18446744073709551594 : -22 : 0xffffffffffffffea) 00000002:00000001:1.0:1583284421.042099:0:19386:0:(mdc_locks.c:1250:mdc_intent_lock()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea) 00800000:00000001:1.0:1583284421.042100:0:19386:0:(lmv_intent.c:354:lmv_intent_open()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea) 00800000:00000001:1.0:1583284421.042102:0:19386:0:(lmv_intent.c:526:lmv_intent_lock()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea) 00000080:00000001:1.0:1583284421.042103:0:19386:0:(namei.c:796:ll_lookup_it()) Process leaving via out (rc=18446744073709551594 : -22 : 0xffffffffffffffea) 00000100:00000001:1.0:1583284421.042105:0:19386:0:(client.c:2519:__ptlrpc_req_finished()) Process entered On the MDS, the logs are: 00000004:00000400:0.0:1583284633.757717:0:4400:0:(mdd_device.c:775:obf_lookup()) bgdzjiq1-MDD0000: Trying to lookup invalid FID [unknown] in .lustre/fid, FID format should be [0x200000400:0x1:0x0] 00000004:00000001:0.0:1583284633.757724:0:4400:0:(mdd_device.c:776:obf_lookup()) Process leaving via out (rc=18446744073709551594 : -22 : 0xffffffffffffffea) 00000004:00000001:0.0:1583284633.757729:0:4400:0:(mdt_open.c:1426:mdt_reint_open()) Process leaving via out_parent (rc=18446744073709551594 : -22 : 0xffffffffffffffea) 00000004:00000001:0.0:1583284633.757734:0:4400:0:(mdt_handler.c:3446:mdt_object_unlock()) Process entered So, looks like the ll_follow_link() causes the problem. When doing the lookup, the client find the inode is a symbol link pointing to "unknown", so naturely, it replaces "/mnt/bgdzjiq1/.lustre/fid/[0x200000402:0x83f:0x0]" to "/mnt/bgdzjiq1/.lustre/fid/unknown". Thus the opening fails on MDT. I am not sure we can consider this as a feature, because we can touch a symbol link itself even the symbol link points to a non-existing file. |