Commit 1fd8159e authored by Christoph Hellwig's avatar Christoph Hellwig
Browse files

xfs: export zoned geometry via XFS_FSOP_GEOM



Export the zoned geometry information so that userspace can query it.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatar"Darrick J. Wong" <djwong@kernel.org>
parent bdc03eb5
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -189,7 +189,9 @@ struct xfs_fsop_geom {
	uint32_t	checked;	/* o: checked fs & rt metadata	*/
	__u32		rgextents;	/* rt extents in a realtime group */
	__u32		rgcount;	/* number of realtime groups	*/
	__u64		reserved[16];	/* reserved space		*/
	__u64		rtstart;	/* start of internal rt section */
	__u64		rtreserved;	/* RT (zoned) reserved blocks	*/
	__u64		reserved[14];	/* reserved space		*/
};

#define XFS_FSOP_GEOM_SICK_COUNTERS	(1 << 0)  /* summary counters */
@@ -247,6 +249,7 @@ typedef struct xfs_fsop_resblks {
#define XFS_FSOP_GEOM_FLAGS_EXCHANGE_RANGE (1 << 24) /* exchange range */
#define XFS_FSOP_GEOM_FLAGS_PARENT	(1 << 25) /* linux parent pointers */
#define XFS_FSOP_GEOM_FLAGS_METADIR	(1 << 26) /* metadata directories */
#define XFS_FSOP_GEOM_FLAGS_ZONED	(1 << 27) /* zoned rt device */

/*
 * Minimum and maximum sizes need for growth checks.
+6 −0
Original line number Diff line number Diff line
@@ -1569,6 +1569,8 @@ xfs_fs_geometry(
		geo->flags |= XFS_FSOP_GEOM_FLAGS_EXCHANGE_RANGE;
	if (xfs_has_metadir(mp))
		geo->flags |= XFS_FSOP_GEOM_FLAGS_METADIR;
	if (xfs_has_zoned(mp))
		geo->flags |= XFS_FSOP_GEOM_FLAGS_ZONED;
	geo->rtsectsize = sbp->sb_blocksize;
	geo->dirblocksize = xfs_dir2_dirblock_bytes(sbp);

@@ -1589,6 +1591,10 @@ xfs_fs_geometry(
		geo->rgcount = sbp->sb_rgcount;
		geo->rgextents = sbp->sb_rgextents;
	}
	if (xfs_has_zoned(mp)) {
		geo->rtstart = sbp->sb_rtstart;
		geo->rtreserved = sbp->sb_rtreserved;
	}
}

/* Read a secondary superblock. */