Commit d75e490f authored by Chuck Lever's avatar Chuck Lever
Browse files

SUNRPC: change svc_xprt::xpt_flags bits to enum



When a sequence of numbers are needed for internal-use only, an enum is
typically best.  The sequence will inevitably need to be changed one
day, and having an enum means the developer doesn't need to think about
renumbering after insertion or deletion.  Such patches will be easier
to review.

Suggested-by: default avatarNeilBrown <neilb@suse.de>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent a6b4ec39
Loading
Loading
Loading
Loading
+21 −17
Original line number Diff line number Diff line
@@ -56,23 +56,6 @@ struct svc_xprt {
	struct list_head	xpt_list;
	struct list_head	xpt_ready;
	unsigned long		xpt_flags;
#define	XPT_BUSY	0		/* enqueued/receiving */
#define	XPT_CONN	1		/* conn pending */
#define	XPT_CLOSE	2		/* dead or dying */
#define	XPT_DATA	3		/* data pending */
#define	XPT_TEMP	4		/* connected transport */
#define	XPT_DEAD	6		/* transport closed */
#define	XPT_CHNGBUF	7		/* need to change snd/rcv buf sizes */
#define	XPT_DEFERRED	8		/* deferred request pending */
#define	XPT_OLD		9		/* used for xprt aging mark+sweep */
#define XPT_LISTENER	10		/* listening endpoint */
#define XPT_CACHE_AUTH	11		/* cache auth info */
#define XPT_LOCAL	12		/* connection from loopback interface */
#define XPT_KILL_TEMP   13		/* call xpo_kill_temp_xprt before closing */
#define XPT_CONG_CTRL	14		/* has congestion control */
#define XPT_HANDSHAKE	15		/* xprt requests a handshake */
#define XPT_TLS_SESSION	16		/* transport-layer security established */
#define XPT_PEER_AUTH	17		/* peer has been authenticated */

	struct svc_serv		*xpt_server;	/* service for transport */
	atomic_t    	    	xpt_reserved;	/* space on outq that is rsvd */
@@ -97,6 +80,27 @@ struct svc_xprt {
	struct rpc_xprt_switch	*xpt_bc_xps;	/* NFSv4.1 backchannel */
};

/* flag bits for xpt_flags */
enum {
	XPT_BUSY,		/* enqueued/receiving */
	XPT_CONN,		/* conn pending */
	XPT_CLOSE,		/* dead or dying */
	XPT_DATA,		/* data pending */
	XPT_TEMP,		/* connected transport */
	XPT_DEAD,		/* transport closed */
	XPT_CHNGBUF,		/* need to change snd/rcv buf sizes */
	XPT_DEFERRED,		/* deferred request pending */
	XPT_OLD,		/* used for xprt aging mark+sweep */
	XPT_LISTENER,		/* listening endpoint */
	XPT_CACHE_AUTH,		/* cache auth info */
	XPT_LOCAL,		/* connection from loopback interface */
	XPT_KILL_TEMP,		/* call xpo_kill_temp_xprt before closing */
	XPT_CONG_CTRL,		/* has congestion control */
	XPT_HANDSHAKE,		/* xprt requests a handshake */
	XPT_TLS_SESSION,	/* transport-layer security established */
	XPT_PEER_AUTH,		/* peer has been authenticated */
};

static inline void unregister_xpt_user(struct svc_xprt *xpt, struct svc_xpt_user *u)
{
	spin_lock(&xpt->xpt_lock);
+35 −18
Original line number Diff line number Diff line
@@ -1918,25 +1918,42 @@ TRACE_EVENT(svc_stats_latency,
		__get_str(procedure), __entry->execute)
);

/*
 * from include/linux/sunrpc/svc_xprt.h
 */
#define SVC_XPRT_FLAG_LIST						\
	svc_xprt_flag(BUSY)						\
	svc_xprt_flag(CONN)						\
	svc_xprt_flag(CLOSE)						\
	svc_xprt_flag(DATA)						\
	svc_xprt_flag(TEMP)						\
	svc_xprt_flag(DEAD)						\
	svc_xprt_flag(CHNGBUF)						\
	svc_xprt_flag(DEFERRED)						\
	svc_xprt_flag(OLD)						\
	svc_xprt_flag(LISTENER)						\
	svc_xprt_flag(CACHE_AUTH)					\
	svc_xprt_flag(LOCAL)						\
	svc_xprt_flag(KILL_TEMP)					\
	svc_xprt_flag(CONG_CTRL)					\
	svc_xprt_flag(HANDSHAKE)					\
	svc_xprt_flag(TLS_SESSION)					\
	svc_xprt_flag_end(PEER_AUTH)

#undef svc_xprt_flag
#undef svc_xprt_flag_end
#define svc_xprt_flag(x)	TRACE_DEFINE_ENUM(XPT_##x);
#define svc_xprt_flag_end(x)	TRACE_DEFINE_ENUM(XPT_##x);

SVC_XPRT_FLAG_LIST

#undef svc_xprt_flag
#undef svc_xprt_flag_end
#define svc_xprt_flag(x)	{ BIT(XPT_##x), #x },
#define svc_xprt_flag_end(x)	{ BIT(XPT_##x), #x }

#define show_svc_xprt_flags(flags)					\
	__print_flags(flags, "|",					\
		{ BIT(XPT_BUSY),		"BUSY" },		\
		{ BIT(XPT_CONN),		"CONN" },		\
		{ BIT(XPT_CLOSE),		"CLOSE" },		\
		{ BIT(XPT_DATA),		"DATA" },		\
		{ BIT(XPT_TEMP),		"TEMP" },		\
		{ BIT(XPT_DEAD),		"DEAD" },		\
		{ BIT(XPT_CHNGBUF),		"CHNGBUF" },		\
		{ BIT(XPT_DEFERRED),		"DEFERRED" },		\
		{ BIT(XPT_OLD),			"OLD" },		\
		{ BIT(XPT_LISTENER),		"LISTENER" },		\
		{ BIT(XPT_CACHE_AUTH),		"CACHE_AUTH" },		\
		{ BIT(XPT_LOCAL),		"LOCAL" },		\
		{ BIT(XPT_KILL_TEMP),		"KILL_TEMP" },		\
		{ BIT(XPT_CONG_CTRL),		"CONG_CTRL" },		\
		{ BIT(XPT_HANDSHAKE),		"HANDSHAKE" },		\
		{ BIT(XPT_TLS_SESSION),		"TLS_SESSION" },	\
		{ BIT(XPT_PEER_AUTH),		"PEER_AUTH" })
	__print_flags(flags, "|", SVC_XPRT_FLAG_LIST)

TRACE_EVENT(svc_xprt_create_err,
	TP_PROTO(