async update cross-MDTs (LU-3534)

[LU-3539] Change update RPC format Created: 29/Jun/13  Updated: 25/Apr/14  Resolved: 25/Apr/14

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: Lustre 2.6.0

Type: Technical task Priority: Minor
Reporter: Di Wang Assignee: Li Wei (Inactive)
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Related
is related to LU-4215 Some expected improvements for OUT Open
Rank (Obsolete): 8903

 Description   

In DNE phase II, the update RPC format will be changed, please refer to HLD of DNE phase II.

enum update_rec_flags {
OUT_UPDATE_FLAG_TYPE = 0x000000001, /* 0 = MDT, 1 = OST */
OUT_UPDATE_FLAG_SYNC = 0x000000002, /* commit update before reply */
OUT_UPDATE_FLAG_COMMITTED = 0x000000004, /* ur_batchid is committed globally */
OUT_UPDATE_FLAG_NOLOG = 0x000000008, /* idempotent update does not need to be logged */
};

struct update_rec_v2 {
_u16 ur_update_type; /* OUT* update type */
__u16 ur_master_index; /* master MDT/OST index */
__u32 ur_flags; /* master target type, globally committed, sync, log?, etc */
__u64 ur_batchid; /* transno of master MDT in operation */
struct lu_fid ur_fid; /* FID operation applies to */
__u32 ur_lens[UPDATE_BUF_COUNT]; /* length of each update buffer, rounded up to 8 bytes */
char ur_bufs[0]; /* per operation data values, multiple of 8 bytes */
};

struct update_header {
__u32 uh_magic; /* UPDATE_BUFFER_MAGIC_V2 */
__u32 uh_count; /* number of update records in request */
__u32 uh_bufs[uh_count]; /* length of each struct update_rec_v2 */
};



 Comments   
Comment by Andreas Dilger [ 02/Jul/13 ]

We also discussed changing the OBJ_* opcodes to be 100+ to avoid conflict with the RPC opcodes.

Comment by Li Wei (Inactive) [ 23/Jul/13 ]

http://review.whamcloud.com/7088

This patch fixes a few endianness bugs in existing DNE code. It would be desirable for 2.5.

Comment by Li Wei (Inactive) [ 26/Jul/13 ]

http://review.whamcloud.com/7128

This patch implements the UPDATE_OBJ RPC format change. Note that the symbol names are not the same as those in the HLD.

The OBJ_* update types do not exist in the same "space" (or "scope") with RPC operation codes. I tend to think existing numbers are fine. Also, if we were to change they to a range that is not currently used by any RPC operations, then they would have to go above 1000. This patch does not change the numbers at the moment.

Comment by Andreas Dilger [ 25/Apr/14 ]

The patches for OUT protocol changes were landed for 2.6.0.

Generated at Sat Feb 10 01:34:47 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.