Unverified Commit 4e325410 authored by David Howells's avatar David Howells Committed by Christian Brauner
Browse files

netfs: Renumber the NETFS_RREQ_* flags to make traces easier to read



Renumber the NETFS_RREQ_* flags to put the most useful status bits in the
bottom nibble - and therefore the last hex digit in the trace output -
making it easier to grasp the state at a glance.

In particular, put the IN_PROGRESS flag in bit 0 and ALL_QUEUED at bit 1.

Also make the flags field in /proc/fs/netfs/requests larger to accommodate
all the flags.

Also make the flags field in the netfs_sreq tracepoint larger to
accommodate all the NETFS_SREQ_* flags.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/20250701163852.2171681-13-dhowells@redhat.com


Reviewed-by: default avatarPaulo Alcantara <pc@manguebit.org>
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 5e1e6ec2
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -58,15 +58,15 @@ static int netfs_requests_seq_show(struct seq_file *m, void *v)

	if (v == &netfs_io_requests) {
		seq_puts(m,
			 "REQUEST  OR REF FL ERR  OPS COVERAGE\n"
			 "======== == === == ==== === =========\n"
			 "REQUEST  OR REF FLAG ERR  OPS COVERAGE\n"
			 "======== == === ==== ==== === =========\n"
			 );
		return 0;
	}

	rreq = list_entry(v, struct netfs_io_request, proc_link);
	seq_printf(m,
		   "%08x %s %3d %2lx %4ld %3d @%04llx %llx/%llx",
		   "%08x %s %3d %4lx %4ld %3d @%04llx %llx/%llx",
		   rreq->debug_id,
		   netfs_origins[rreq->origin],
		   refcount_read(&rreq->ref),
+10 −10
Original line number Diff line number Diff line
@@ -265,17 +265,17 @@ struct netfs_io_request {
	bool			direct_bv_unpin; /* T if direct_bv[] must be unpinned */
	refcount_t		ref;
	unsigned long		flags;
#define NETFS_RREQ_OFFLOAD_COLLECTION	0	/* Offload collection to workqueue */
#define NETFS_RREQ_NO_UNLOCK_FOLIO	2	/* Don't unlock no_unlock_folio on completion */
#define NETFS_RREQ_FAILED		4	/* The request failed */
#define NETFS_RREQ_IN_PROGRESS		5	/* Unlocked when the request completes (has ref) */
#define NETFS_RREQ_FOLIO_COPY_TO_CACHE	6	/* Copy current folio to cache from read */
#define NETFS_RREQ_UPLOAD_TO_SERVER	8	/* Need to write to the server */
#define NETFS_RREQ_PAUSE		11	/* Pause subrequest generation */
#define NETFS_RREQ_IN_PROGRESS		0	/* Unlocked when the request completes (has ref) */
#define NETFS_RREQ_ALL_QUEUED		1	/* All subreqs are now queued */
#define NETFS_RREQ_PAUSE		2	/* Pause subrequest generation */
#define NETFS_RREQ_FAILED		3	/* The request failed */
#define NETFS_RREQ_RETRYING		4	/* Set if we're in the retry path */
#define NETFS_RREQ_SHORT_TRANSFER	5	/* Set if we have a short transfer */
#define NETFS_RREQ_OFFLOAD_COLLECTION	8	/* Offload collection to workqueue */
#define NETFS_RREQ_NO_UNLOCK_FOLIO	9	/* Don't unlock no_unlock_folio on completion */
#define NETFS_RREQ_FOLIO_COPY_TO_CACHE	10	/* Copy current folio to cache from read */
#define NETFS_RREQ_UPLOAD_TO_SERVER	11	/* Need to write to the server */
#define NETFS_RREQ_USE_IO_ITER		12	/* Use ->io_iter rather than ->i_pages */
#define NETFS_RREQ_ALL_QUEUED		13	/* All subreqs are now queued */
#define NETFS_RREQ_RETRYING		14	/* Set if we're in the retry path */
#define NETFS_RREQ_SHORT_TRANSFER	15	/* Set if we have a short transfer */
#define NETFS_RREQ_USE_PGPRIV2		31	/* [DEPRECATED] Use PG_private_2 to mark
						 * write to cache on read */
	const struct netfs_request_ops *netfs_ops;
+1 −1
Original line number Diff line number Diff line
@@ -367,7 +367,7 @@ TRACE_EVENT(netfs_sreq,
		    __entry->slot	= sreq->io_iter.folioq_slot;
			   ),

	    TP_printk("R=%08x[%x] %s %s f=%02x s=%llx %zx/%zx s=%u e=%d",
	    TP_printk("R=%08x[%x] %s %s f=%03x s=%llx %zx/%zx s=%u e=%d",
		      __entry->rreq, __entry->index,
		      __print_symbolic(__entry->source, netfs_sreq_sources),
		      __print_symbolic(__entry->what, netfs_sreq_traces),