]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
xfs_io: display rt group in verbose bmap output
authorDarrick J. Wong <djwong@kernel.org>
Thu, 8 Dec 2022 21:40:39 +0000 (13:40 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Wed, 22 Nov 2023 23:03:35 +0000 (15:03 -0800)
Display the rt group number in the bmap -v output, just like we do for
regular data files.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
io/bmap.c

index 722a389baaa4d8e74009efc29ffaee9ddfe12941..11bbc0629cf88178c5dbf0fd34c500e9510b5024 100644 (file)
--- a/io/bmap.c
+++ b/io/bmap.c
@@ -264,9 +264,16 @@ bmap_f(
 
                foff_w = boff_w = aoff_w = MINRANGE_WIDTH;
                tot_w = MINTOT_WIDTH;
-               if (is_rt)
-                       sunit = swidth = bbperag = 0;
-               else {
+               if (is_rt) {
+                       if (fsgeo.rgcount == 0) {
+                               bbperag = 0;
+                       } else {
+                               bbperag = (off64_t)fsgeo.rgblocks *
+                                         (off64_t)fsgeo.blocksize / BBSIZE;
+                       }
+                       sunit = 0;
+                       swidth = 0;
+               } else {
                        bbperag = (off64_t)fsgeo.agblocks *
                                  (off64_t)fsgeo.blocksize / BBSIZE;
                        sunit = (fsgeo.sunit * fsgeo.blocksize) / BBSIZE;
@@ -295,7 +302,7 @@ bmap_f(
                                        (long long)(map[i + 1].bmv_block +
                                                map[i + 1].bmv_length - 1LL));
                                boff_w = max(boff_w, strlen(bbuf));
-                               if (!is_rt) {
+                               if (bbperag > 0) {
                                        agno = map[i + 1].bmv_block / bbperag;
                                        agoff = map[i + 1].bmv_block -
                                                        (agno * bbperag);
@@ -312,13 +319,20 @@ bmap_f(
                                        numlen(map[i+1].bmv_length, 10));
                        }
                }
-               agno_w = is_rt ? 0 : max(MINAG_WIDTH, numlen(fsgeo.agcount, 10));
+               if (is_rt) {
+                       if (fsgeo.rgcount > 0)
+                               agno_w = max(MINAG_WIDTH, numlen(fsgeo.rgcount, 10));
+                       else
+                               agno_w = 0;
+               } else {
+                       agno_w = max(MINAG_WIDTH, numlen(fsgeo.agcount, 10));
+               }
                printf("%4s: %-*s %-*s %*s %-*s %*s%s\n",
                        _("EXT"),
                        foff_w, _("FILE-OFFSET"),
                        boff_w, is_rt ? _("RT-BLOCK-RANGE") : _("BLOCK-RANGE"),
-                       agno_w, is_rt ? "" : _("AG"),
-                       aoff_w, is_rt ? "" : _("AG-OFFSET"),
+                       agno_w, is_rt ? (fsgeo.rgcount ? _("RG") : "") : _("AG"),
+                       aoff_w, is_rt ? (fsgeo.rgcount ? _("RG-OFFSET") : "") : _("AG-OFFSET"),
                        tot_w, _("TOTAL"),
                        flg ? _(" FLAGS") : "");
                for (i = 0; i < egcnt; i++) {
@@ -377,7 +391,7 @@ bmap_f(
                                                map[i + 1].bmv_length - 1LL));
                                printf("%4d: %-*s %-*s", i, foff_w, rbuf,
                                        boff_w, bbuf);
-                               if (!is_rt) {
+                               if (bbperag > 0) {
                                        agno = map[i + 1].bmv_block / bbperag;
                                        agoff = map[i + 1].bmv_block -
                                                        (agno * bbperag);