Message ID | 20250409075557.3535745-40-hch@lst.de (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [01/45] xfs: generalize the freespace and reserved blocks handling | expand |
On Wed, Apr 09, 2025 at 09:55:42AM +0200, Christoph Hellwig wrote: > But use the information store in "file". > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- > io/fsmap.c | 18 +++--------------- > 1 file changed, 3 insertions(+), 15 deletions(-) > > diff --git a/io/fsmap.c b/io/fsmap.c > index 6a87e8972f26..3cc1b510316c 100644 > --- a/io/fsmap.c > +++ b/io/fsmap.c > @@ -166,9 +166,9 @@ static void > dump_map_verbose( > unsigned long long *nr, > struct fsmap_head *head, > - bool *dumped_flags, > - struct xfs_fsop_geom *fsgeo) > + bool *dumped_flags) > { > + struct xfs_fsop_geom *fsgeo = &file->geom; > unsigned long long i; > struct fsmap *p; > int agno; > @@ -395,7 +395,6 @@ fsmap_f( > struct fsmap *p; > struct fsmap_head *head; > struct fsmap *l, *h; > - struct xfs_fsop_geom fsgeo; > long long start = 0; > long long end = -1; > int map_size; > @@ -470,17 +469,6 @@ fsmap_f( > end <<= BBSHIFT; > } > > - if (vflag) { > - c = -xfrog_geometry(file->fd, &fsgeo); > - if (c) { > - fprintf(stderr, > - _("%s: can't get geometry [\"%s\"]: %s\n"), > - progname, file->name, strerror(c)); > - exitcode = 1; > - return 0; > - } > - } This leads to a regression on ext4: # xfs_io -c 'fsmap -vvvvvv' /opt/ Floating point exception which is a divide by zero in the line: agno = p->fmr_physical / bperag; because bperag is 0 on ext4. The current behavior is slightly less unfriendly: # xfs_io -c 'fsmap -vvvvvv' /opt/ xfs_io: can't get geometry ["/opt/"]: Inappropriate ioctl for device because the xfrog_geometry() call here fails. --D > - > map_size = nflag ? nflag : 131072 / sizeof(struct fsmap); > head = malloc(fsmap_sizeof(map_size)); > if (head == NULL) { > @@ -531,7 +519,7 @@ fsmap_f( > break; > > if (vflag) > - dump_map_verbose(&nr, head, &dumped_flags, &fsgeo); > + dump_map_verbose(&nr, head, &dumped_flags); > else if (mflag) > dump_map_machine(&nr, head); > else > -- > 2.47.2 > >
diff --git a/io/fsmap.c b/io/fsmap.c index 6a87e8972f26..3cc1b510316c 100644 --- a/io/fsmap.c +++ b/io/fsmap.c @@ -166,9 +166,9 @@ static void dump_map_verbose( unsigned long long *nr, struct fsmap_head *head, - bool *dumped_flags, - struct xfs_fsop_geom *fsgeo) + bool *dumped_flags) { + struct xfs_fsop_geom *fsgeo = &file->geom; unsigned long long i; struct fsmap *p; int agno; @@ -395,7 +395,6 @@ fsmap_f( struct fsmap *p; struct fsmap_head *head; struct fsmap *l, *h; - struct xfs_fsop_geom fsgeo; long long start = 0; long long end = -1; int map_size; @@ -470,17 +469,6 @@ fsmap_f( end <<= BBSHIFT; } - if (vflag) { - c = -xfrog_geometry(file->fd, &fsgeo); - if (c) { - fprintf(stderr, - _("%s: can't get geometry [\"%s\"]: %s\n"), - progname, file->name, strerror(c)); - exitcode = 1; - return 0; - } - } - map_size = nflag ? nflag : 131072 / sizeof(struct fsmap); head = malloc(fsmap_sizeof(map_size)); if (head == NULL) { @@ -531,7 +519,7 @@ fsmap_f( break; if (vflag) - dump_map_verbose(&nr, head, &dumped_flags, &fsgeo); + dump_map_verbose(&nr, head, &dumped_flags); else if (mflag) dump_map_machine(&nr, head); else
But use the information store in "file". Signed-off-by: Christoph Hellwig <hch@lst.de> --- io/fsmap.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-)