[LU-1575] Add flock policy support Created: 27/Jun/12 Updated: 28/Oct/15 Resolved: 28/Oct/15 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.2.0, Lustre 2.3.0, Lustre 2.1.1, Lustre 1.8.6 |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Iurii Golovach (Inactive) | Assignee: | Oleg Drokin |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | client, server | ||
| Issue Links: |
|
||||||||||
| Sub-Tasks: |
|
||||||||||
| Rank (Obsolete): | 6110 | ||||||||||
| Description |
|
The goal of this ticket is to add the support for the patched clients 1.8 to be correctly handled on the 2.x fixed side. The patch has to contains next two parts: |
| Comments |
| Comment by Iurii Golovach (Inactive) [ 27/Jun/12 ] |
|
http://review.whamcloud.com/#change,3202 - patch which introduce new flag on the server side (2.x). http://review.whamcloud.com/3203 - patch which introduce new flag on the client side (1.8). |
| Comment by Andreas Dilger [ 17/Aug/12 ] |
|
Making this a 2.3 blocker until the interop patches are landed. The original patch in |
| Comment by Iurii Golovach (Inactive) [ 20/Aug/12 ] |
|
Patches with OBD_CONNECT_FLAG_OWNER were introduced sepatately according the request from Andreas at Short explanation of the patch is next: As you may see at 1.8 there is only introdusion OBD_CONNECT_OWNER flag and sending it to the server. Defines where OBD_CONNECT_OWNER is included are placed at the lustre_idl.h and there is no functional changes on the client side at all. There is a change on the server side. Before the patch: new_client = (exp->exp_connect_flags & OBD_CONNECT_FULL20) != 0; After the patch: new_client = (exp->exp_connect_flags & OBD_CONNECT_FULL20) != 0; As you may see the new check was introduced: else if ((exp->exp_connect_flags & OBD_CONNECT_FLOCK_OWNER) != 0 && There are few ideas in this lines. 1) The funtional change idea: Without this line server recognize the 1.8 client like a client with old flock policy (wich is native for 1.8.x). The difference between 1.8 and 2.x flock policy handling is in assigning flocks to the OWNER instead of using PID. The issue comes when 1.8 clients (patched with https://bugzilla.lustre.org/attachment.cgi?id=30902) try to work with 2.x server. Since 2.x server recognize them like 1.8 clients and start working with PID field instead of OWNER field. 2.x server uses the next function: void ldlm_flock_policy_wire18_to_local(const ldlm_wire_policy_data_t *wpolicy, While it should use the next one: That's all about functional changes. Now two ideas in code: 2) It may looks like OBD_CONNECT_FULL20 flag can be used and there is no needs in a new flag. 3) sepatare "else if" is used: The reason is that we have use 2.x functionality for the LDLM_FLOCK only. And use 1.8 functionality for other cases. Andreas, please, let me know if there are any questions which this test doesn't cover. |
| Comment by Andreas Dilger [ 20/Aug/12 ] |
|
Repeating some of the comments from the inspection of the b1_8 version of the patch, so that everyone is clear on what is going on here:
So to move forward, either b1_8 should only get the flag reservation patch (http://review.whamcloud.com/3723), or the att=30902 patch needs to be submitted to b1_8 merged together with change 3203 to actually use the flag, so that there is no time when the b1_8 clients are sending the OWNER field without also connecting with the OBD_CONNECT_FLOCK_OWNER feature flag. At the same time (i.e. blocking the 2.1.3 release, which is basically out the door already), b2_1 would also need to be patched to understand this flag, and it would cause 2.1.0/2.1.1/2.1.2/2.2 servers to break against patched 1.8.8 clients. It isn't clear to me whether there is any benefit of submitting the "fix" to b1_8 at all, since the easiest thing to do would be to leave all 1.8 clients unpatched and handle this at the server. Is there a functional benefit for 1.8 clients if they DO set the OWNER field, as opposed to the 2.x servers with |
| Comment by Andreas Dilger [ 20/Aug/12 ] |
|
Without a clear functional benefit to applying the original att=30902 change to b1_8, I don't see any value in going down this road at all for our 1.8 clients. I understand that Xyratex has patched 1.8.x clients in the field using this code, and they will be applying (or already have) http://review.whamcloud.com/3203 in order to declare their use of the flock OWNER field. I think it also makes sense to apply an updated version of 3202/3722 to master (and b2_3 if already forked) and b2_1, to avoid potential interop issues with patched b1_8 clients (Xyratex/Oracle/Cray/etc). However, I don't yet see any benefit for applying att=30902 to our b1_8 at this time, and definite interoperability problems would be introduced for existing deployments. Having a subtest added to sanity.sh test_105 that actually exercised this code in master would help avoid potential interoperability issues in the future, and would ensure that this code is exercised during our release interoperability testing, which is run regularly by autotest. |
| Comment by Oleg Drokin [ 06/Sep/12 ] |
|
There is a benefit to b1_8, actually more than one: That said, att. 3203 all by itself is harmful, it also needs the actual logic implemented, plus on top of that logic, it needs a bit of interop to now include owner info if the server did not acknowledge the owner flag. |
| Comment by Cory Spitz [ 20/Nov/12 ] |
|
Can http://review.whamcloud.com/3202 land to master? |
| Comment by Nathan Rutman [ 21/Nov/12 ] |
|
Xyratex-bug-id: MRP-489 |
| Comment by Iurii Golovach (Inactive) [ 19/Feb/13 ] |
|
Status update. |
| Comment by Cory Spitz [ 18/Nov/13 ] |
|
Since http://review.whamcloud.com/3203 is abandoned, is there any reason to keep this ticket open? |
| Comment by Andreas Dilger [ 28/Oct/15 ] |
|
Close old bug. |