mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	fs: dlm: add union in dlm header for lockspace id
This patch adds union inside the lockspace id to handle it also for another use case for a different dlm command. Signed-off-by: Alexander Aring <aahringo@redhat.com> Signed-off-by: David Teigland <teigland@redhat.com>
This commit is contained in:
		
							parent
							
								
									37a247da51
								
							
						
					
					
						commit
						8e2e40860c
					
				
					 4 changed files with 14 additions and 9 deletions
				
			
		|  | @ -380,7 +380,10 @@ static inline int rsb_flag(struct dlm_rsb *r, enum rsb_flags flag) | ||||||
| 
 | 
 | ||||||
| struct dlm_header { | struct dlm_header { | ||||||
| 	uint32_t		h_version; | 	uint32_t		h_version; | ||||||
|  | 	union { | ||||||
|  | 		/* for DLM_MSG and DLM_RCOM */ | ||||||
| 		uint32_t	h_lockspace; | 		uint32_t	h_lockspace; | ||||||
|  | 	} u; | ||||||
| 	uint32_t		h_nodeid;	/* nodeid of sender */ | 	uint32_t		h_nodeid;	/* nodeid of sender */ | ||||||
| 	uint16_t		h_length; | 	uint16_t		h_length; | ||||||
| 	uint8_t			h_cmd;		/* DLM_MSG, DLM_RCOM */ | 	uint8_t			h_cmd;		/* DLM_MSG, DLM_RCOM */ | ||||||
|  |  | ||||||
|  | @ -3544,7 +3544,7 @@ static int _create_message(struct dlm_ls *ls, int mb_len, | ||||||
| 	ms = (struct dlm_message *) mb; | 	ms = (struct dlm_message *) mb; | ||||||
| 
 | 
 | ||||||
| 	ms->m_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR); | 	ms->m_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR); | ||||||
| 	ms->m_header.h_lockspace = ls->ls_global_id; | 	ms->m_header.u.h_lockspace = ls->ls_global_id; | ||||||
| 	ms->m_header.h_nodeid = dlm_our_nodeid(); | 	ms->m_header.h_nodeid = dlm_our_nodeid(); | ||||||
| 	ms->m_header.h_length = mb_len; | 	ms->m_header.h_length = mb_len; | ||||||
| 	ms->m_header.h_cmd = DLM_MSG; | 	ms->m_header.h_cmd = DLM_MSG; | ||||||
|  | @ -5038,16 +5038,16 @@ void dlm_receive_buffer(union dlm_packet *p, int nodeid) | ||||||
| 
 | 
 | ||||||
| 	if (hd->h_nodeid != nodeid) { | 	if (hd->h_nodeid != nodeid) { | ||||||
| 		log_print("invalid h_nodeid %d from %d lockspace %x", | 		log_print("invalid h_nodeid %d from %d lockspace %x", | ||||||
| 			  hd->h_nodeid, nodeid, hd->h_lockspace); | 			  hd->h_nodeid, nodeid, hd->u.h_lockspace); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	ls = dlm_find_lockspace_global(hd->h_lockspace); | 	ls = dlm_find_lockspace_global(hd->u.h_lockspace); | ||||||
| 	if (!ls) { | 	if (!ls) { | ||||||
| 		if (dlm_config.ci_log_debug) { | 		if (dlm_config.ci_log_debug) { | ||||||
| 			printk_ratelimited(KERN_DEBUG "dlm: invalid lockspace " | 			printk_ratelimited(KERN_DEBUG "dlm: invalid lockspace " | ||||||
| 				"%u from %d cmd %d type %d\n", | 				"%u from %d cmd %d type %d\n", | ||||||
| 				hd->h_lockspace, nodeid, hd->h_cmd, type); | 				hd->u.h_lockspace, nodeid, hd->h_cmd, type); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if (hd->h_cmd == DLM_RCOM && type == DLM_RCOM_STATUS) | 		if (hd->h_cmd == DLM_RCOM && type == DLM_RCOM_STATUS) | ||||||
|  |  | ||||||
|  | @ -35,7 +35,7 @@ static void _create_rcom(struct dlm_ls *ls, int to_nodeid, int type, int len, | ||||||
| 	rc = (struct dlm_rcom *) mb; | 	rc = (struct dlm_rcom *) mb; | ||||||
| 
 | 
 | ||||||
| 	rc->rc_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR); | 	rc->rc_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR); | ||||||
| 	rc->rc_header.h_lockspace = ls->ls_global_id; | 	rc->rc_header.u.h_lockspace = ls->ls_global_id; | ||||||
| 	rc->rc_header.h_nodeid = dlm_our_nodeid(); | 	rc->rc_header.h_nodeid = dlm_our_nodeid(); | ||||||
| 	rc->rc_header.h_length = mb_len; | 	rc->rc_header.h_length = mb_len; | ||||||
| 	rc->rc_header.h_cmd = DLM_RCOM; | 	rc->rc_header.h_cmd = DLM_RCOM; | ||||||
|  | @ -508,7 +508,7 @@ int dlm_send_ls_not_ready(int nodeid, struct dlm_rcom *rc_in) | ||||||
| 	rc = (struct dlm_rcom *) mb; | 	rc = (struct dlm_rcom *) mb; | ||||||
| 
 | 
 | ||||||
| 	rc->rc_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR); | 	rc->rc_header.h_version = (DLM_HEADER_MAJOR | DLM_HEADER_MINOR); | ||||||
| 	rc->rc_header.h_lockspace = rc_in->rc_header.h_lockspace; | 	rc->rc_header.u.h_lockspace = rc_in->rc_header.u.h_lockspace; | ||||||
| 	rc->rc_header.h_nodeid = dlm_our_nodeid(); | 	rc->rc_header.h_nodeid = dlm_our_nodeid(); | ||||||
| 	rc->rc_header.h_length = mb_len; | 	rc->rc_header.h_length = mb_len; | ||||||
| 	rc->rc_header.h_cmd = DLM_RCOM; | 	rc->rc_header.h_cmd = DLM_RCOM; | ||||||
|  |  | ||||||
|  | @ -23,7 +23,8 @@ | ||||||
| void header_out(struct dlm_header *hd) | void header_out(struct dlm_header *hd) | ||||||
| { | { | ||||||
| 	hd->h_version		= cpu_to_le32(hd->h_version); | 	hd->h_version		= cpu_to_le32(hd->h_version); | ||||||
| 	hd->h_lockspace		= cpu_to_le32(hd->h_lockspace); | 	/* does it for others u32 in union as well */ | ||||||
|  | 	hd->u.h_lockspace	= cpu_to_le32(hd->u.h_lockspace); | ||||||
| 	hd->h_nodeid		= cpu_to_le32(hd->h_nodeid); | 	hd->h_nodeid		= cpu_to_le32(hd->h_nodeid); | ||||||
| 	hd->h_length		= cpu_to_le16(hd->h_length); | 	hd->h_length		= cpu_to_le16(hd->h_length); | ||||||
| } | } | ||||||
|  | @ -31,7 +32,8 @@ void header_out(struct dlm_header *hd) | ||||||
| void header_in(struct dlm_header *hd) | void header_in(struct dlm_header *hd) | ||||||
| { | { | ||||||
| 	hd->h_version		= le32_to_cpu(hd->h_version); | 	hd->h_version		= le32_to_cpu(hd->h_version); | ||||||
| 	hd->h_lockspace		= le32_to_cpu(hd->h_lockspace); | 	/* does it for others u32 in union as well */ | ||||||
|  | 	hd->u.h_lockspace	= le32_to_cpu(hd->u.h_lockspace); | ||||||
| 	hd->h_nodeid		= le32_to_cpu(hd->h_nodeid); | 	hd->h_nodeid		= le32_to_cpu(hd->h_nodeid); | ||||||
| 	hd->h_length		= le16_to_cpu(hd->h_length); | 	hd->h_length		= le16_to_cpu(hd->h_length); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Alexander Aring
						Alexander Aring