re: mid structures cifs vs. smb2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



So with the rearrangement of fields to make it easier to compare the
two structures (and fixing the size of the smb2 pid field
to match the SMB2 protocol definition rather than pid_t,
and removing the unneded sequence number for smb2),
the structures now would look simpler:

/* one of these for every pending CIFS request to the server */
struct mid_q_entry {
	struct list_head qhead;	/* mids waiting on reply from this server */
	int midState;	/* wish this were enum but can not pass to wait_event */
	unsigned long when_alloc;  /* when mid was created */
#ifdef CONFIG_CIFS_STATS2
	unsigned long when_sent; /* time when smb send finished */
	unsigned long when_received; /* when demux complete (taken off wire) */
#endif
	bool largeBuf:1;	/* if valid response, is pointer to large buf */
	mid_callback_t *callback; /* call completion callback */
	void *callback_data;	  /* general purpose pointer for callback */
	__u16 mid;		/* multiplex id */
	__u32 sequence_number;  /* for CIFS signing */
	__u8 command;		/* smb command code */
	__u16 pid;		/* process id */
	struct smb_hdr *resp_buf;	/* response buffer */
	bool multiRsp:1;	/* multiple trans2 responses for one request  */
	bool multiEnd:1;	/* both received */
};


/* one of these for every pending SMB2 request to the server */
struct smb2_mid_entry {
	struct list_head qhead;	/* mids waiting on reply from this server */
	int mid_state;	/* wish this were enum but can not pass to wait_event */
	unsigned long when_alloc;  /* when mid was created */
#ifdef CONFIG_CIFS_STATS2
	unsigned long when_sent; /* time when smb send finished */
	unsigned long when_received; /* when demux complete (taken off wire) */
#endif
	bool large_buf:1;	/* if valid response, is pointer to large buf */
	smb2_mid_callback_t *callback;
	void *callback_data;
	__u64 mid;		/* multiplex id(s), bigger for smb2 */
	__le16 command;		/* smb2 command code */
	__u32 pid;		/* process id - bigger for smb2 than cifs */
	struct smb2_hdr *resp_buf;	/* response buffer */

	/* Additional fields below needed for handling async smb2 responses
	and for asynchronous smb2_writepages support have been temporarily
	removed from the port and will be reenabled as that gets merged in */

    /* Fields needed for smb2_writepages, compound ops, async support
       will eventually follow */
};
-- 
Thanks,

Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux