All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCHSET 0/2] xfsprogs: random fixes
@ 2022-05-05 16:03 Darrick J. Wong
  2022-05-05 16:04 ` [PATCH 1/2] xfs_scrub: move to mallinfo2 when available Darrick J. Wong
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Darrick J. Wong @ 2022-05-05 16:03 UTC (permalink / raw)
  To: sandeen, djwong; +Cc: linux-xfs

Hi all,

This series contains miscellaneous changes -- a port to mallinfo2, and
fixing a theoretical stack stack overrun in xfs_db.

If you're going to start using this mess, you probably ought to just
pull from my git trees, which are linked below.

This is an extraordinary way to destroy everything.  Enjoy!
Comments and questions are, as always, welcome.

--D

kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=random-fixes

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=random-fixes

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=random-fixes
---
 configure.ac          |    1 +
 db/io.c               |    2 +-
 include/builddefs.in  |    1 +
 m4/package_libcdev.m4 |   18 ++++++++++++++++++
 scrub/Makefile        |    4 ++++
 scrub/xfs_scrub.c     |   47 +++++++++++++++++++++++++++++------------------
 6 files changed, 54 insertions(+), 19 deletions(-)


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/2] xfs_scrub: move to mallinfo2 when available
  2022-05-05 16:03 [PATCHSET 0/2] xfsprogs: random fixes Darrick J. Wong
@ 2022-05-05 16:04 ` Darrick J. Wong
  2022-05-05 19:28   ` Eric Sandeen
  2022-05-10  9:38   ` Christoph Hellwig
  2022-05-05 16:04 ` [PATCH 2/2] xfs_db: fix a complaint about a printf buffer overrun Darrick J. Wong
  2022-05-10 21:30 ` [PATCH 3/2] xfs: note the removal of XFS_IOC_FSSETDM in the documentation Darrick J. Wong
  2 siblings, 2 replies; 10+ messages in thread
From: Darrick J. Wong @ 2022-05-05 16:04 UTC (permalink / raw)
  To: sandeen, djwong; +Cc: linux-xfs

From: Darrick J. Wong <djwong@kernel.org>

Starting with glibc 2.35, the mallinfo library call has finally been
upgraded to return 64-bit memory usage quantities.  Migrate to the new
call, since it also warns about mallinfo being deprecated.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 configure.ac          |    1 +
 include/builddefs.in  |    1 +
 m4/package_libcdev.m4 |   18 ++++++++++++++++++
 scrub/Makefile        |    4 ++++
 scrub/xfs_scrub.c     |   47 +++++++++++++++++++++++++++++------------------
 5 files changed, 53 insertions(+), 18 deletions(-)


diff --git a/configure.ac b/configure.ac
index 160f64dd..4650d56c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -192,6 +192,7 @@ AC_HAVE_STATFS_FLAGS
 AC_HAVE_MAP_SYNC
 AC_HAVE_DEVMAPPER
 AC_HAVE_MALLINFO
+AC_HAVE_MALLINFO2
 AC_PACKAGE_WANT_ATTRIBUTES_H
 AC_HAVE_LIBATTR
 if test "$enable_scrub" = "yes"; then
diff --git a/include/builddefs.in b/include/builddefs.in
index 626db210..e0a2f3cb 100644
--- a/include/builddefs.in
+++ b/include/builddefs.in
@@ -115,6 +115,7 @@ HAVE_STATFS_FLAGS = @have_statfs_flags@
 HAVE_MAP_SYNC = @have_map_sync@
 HAVE_DEVMAPPER = @have_devmapper@
 HAVE_MALLINFO = @have_mallinfo@
+HAVE_MALLINFO2 = @have_mallinfo2@
 HAVE_LIBATTR = @have_libattr@
 HAVE_LIBICU = @have_libicu@
 HAVE_OPENAT = @have_openat@
diff --git a/m4/package_libcdev.m4 b/m4/package_libcdev.m4
index adab9bb9..8d05dc40 100644
--- a/m4/package_libcdev.m4
+++ b/m4/package_libcdev.m4
@@ -367,6 +367,24 @@ AC_DEFUN([AC_HAVE_MALLINFO],
     AC_SUBST(have_mallinfo)
   ])
 
+#
+# Check if we have a mallinfo2 libc call
+#
+AC_DEFUN([AC_HAVE_MALLINFO2],
+  [ AC_MSG_CHECKING([for mallinfo2 ])
+    AC_TRY_COMPILE([
+#include <malloc.h>
+    ], [
+         struct mallinfo2 test;
+
+         test.arena = 0; test.hblkhd = 0; test.uordblks = 0; test.fordblks = 0;
+         test = mallinfo2();
+    ], have_mallinfo2=yes
+       AC_MSG_RESULT(yes),
+       AC_MSG_RESULT(no))
+    AC_SUBST(have_mallinfo2)
+  ])
+
 #
 # Check if we have a openat call
 #
diff --git a/scrub/Makefile b/scrub/Makefile
index 74492fb6..aba14ed2 100644
--- a/scrub/Makefile
+++ b/scrub/Makefile
@@ -77,6 +77,10 @@ ifeq ($(HAVE_MALLINFO),yes)
 LCFLAGS += -DHAVE_MALLINFO
 endif
 
+ifeq ($(HAVE_MALLINFO2),yes)
+LCFLAGS += -DHAVE_MALLINFO2
+endif
+
 ifeq ($(HAVE_SYNCFS),yes)
 LCFLAGS += -DHAVE_SYNCFS
 endif
diff --git a/scrub/xfs_scrub.c b/scrub/xfs_scrub.c
index 41839c26..7a0411b0 100644
--- a/scrub/xfs_scrub.c
+++ b/scrub/xfs_scrub.c
@@ -282,6 +282,34 @@ phase_start(
 	return error;
 }
 
+static inline unsigned long long
+kbytes(unsigned long long x)
+{
+	return (x + 1023) / 1024;
+}
+
+static void
+report_mem_usage(
+	const char			*phase,
+	const struct phase_rusage	*pi)
+{
+#if defined(HAVE_MALLINFO2) || defined(HAVE_MALLINFO)
+# ifdef HAVE_MALLINFO2
+	struct mallinfo2		mall_now = mallinfo2();
+# else
+	struct mallinfo			mall_now = mallinfo();
+# endif
+	fprintf(stdout, _("%sMemory used: %lluk/%lluk (%lluk/%lluk), "),
+		phase,
+		kbytes(mall_now.arena), kbytes(mall_now.hblkhd),
+		kbytes(mall_now.uordblks), kbytes(mall_now.fordblks));
+#else
+	fprintf(stdout, _("%sMemory used: %lluk, "),
+		phase,
+		kbytes(((char *) sbrk(0)) - ((char *) pi->brk_start)));
+#endif
+}
+
 /* Report usage stats. */
 static int
 phase_end(
@@ -289,9 +317,6 @@ phase_end(
 	unsigned int		phase)
 {
 	struct rusage		ruse_now;
-#ifdef HAVE_MALLINFO
-	struct mallinfo		mall_now;
-#endif
 	struct timeval		time_now;
 	char			phasebuf[DESCR_BUFSZ];
 	double			dt;
@@ -323,21 +348,7 @@ phase_end(
 	else
 		phasebuf[0] = 0;
 
-#define kbytes(x)	(((unsigned long)(x) + 1023) / 1024)
-#ifdef HAVE_MALLINFO
-
-	mall_now = mallinfo();
-	fprintf(stdout, _("%sMemory used: %luk/%luk (%luk/%luk), "),
-		phasebuf,
-		kbytes(mall_now.arena), kbytes(mall_now.hblkhd),
-		kbytes(mall_now.uordblks), kbytes(mall_now.fordblks));
-#else
-	fprintf(stdout, _("%sMemory used: %luk, "),
-		phasebuf,
-		(unsigned long) kbytes(((char *) sbrk(0)) -
-				       ((char *) pi->brk_start)));
-#endif
-#undef kbytes
+	report_mem_usage(phasebuf, pi);
 
 	fprintf(stdout, _("time: %5.2f/%5.2f/%5.2fs\n"),
 		timeval_subtract(&time_now, &pi->time),


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/2] xfs_db: fix a complaint about a printf buffer overrun
  2022-05-05 16:03 [PATCHSET 0/2] xfsprogs: random fixes Darrick J. Wong
  2022-05-05 16:04 ` [PATCH 1/2] xfs_scrub: move to mallinfo2 when available Darrick J. Wong
@ 2022-05-05 16:04 ` Darrick J. Wong
  2022-05-05 19:34   ` Eric Sandeen
  2022-05-10  9:38   ` Christoph Hellwig
  2022-05-10 21:30 ` [PATCH 3/2] xfs: note the removal of XFS_IOC_FSSETDM in the documentation Darrick J. Wong
  2 siblings, 2 replies; 10+ messages in thread
From: Darrick J. Wong @ 2022-05-05 16:04 UTC (permalink / raw)
  To: sandeen, djwong; +Cc: linux-xfs

From: Darrick J. Wong <djwong@kernel.org>

gcc 11 warns that stack_f doesn't allocate a sufficiently large buffer
to hold the printf output.  I don't think the io cursor stack is really
going to grow to 4 billion levels deep, but let's fix this anyway.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 db/io.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


diff --git a/db/io.c b/db/io.c
index 98f4e605..bfc86cc4 100644
--- a/db/io.c
+++ b/db/io.c
@@ -638,7 +638,7 @@ stack_f(
 	char	**argv)
 {
 	int	i;
-	char	tagbuf[8];
+	char	tagbuf[14];
 
 	for (i = iocur_sp; i > 0; i--) {
 		snprintf(tagbuf, sizeof(tagbuf), "%d: ", i);


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] xfs_scrub: move to mallinfo2 when available
  2022-05-05 16:04 ` [PATCH 1/2] xfs_scrub: move to mallinfo2 when available Darrick J. Wong
@ 2022-05-05 19:28   ` Eric Sandeen
  2022-05-10  9:38   ` Christoph Hellwig
  1 sibling, 0 replies; 10+ messages in thread
From: Eric Sandeen @ 2022-05-05 19:28 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: linux-xfs

On 5/5/22 11:04 AM, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> Starting with glibc 2.35, the mallinfo library call has finally been
> upgraded to return 64-bit memory usage quantities.  Migrate to the new
> call, since it also warns about mallinfo being deprecated.
> 
> Signed-off-by: Darrick J. Wong <djwong@kernel.org>

Seems fine. Turning into a fair bit of code for an informational message,
do you really need it? ;)

Anyway, looks like it fixes the warning, thanks!

Reviewed-by: Eric Sandeen <sandeen@redhat.com>



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] xfs_db: fix a complaint about a printf buffer overrun
  2022-05-05 16:04 ` [PATCH 2/2] xfs_db: fix a complaint about a printf buffer overrun Darrick J. Wong
@ 2022-05-05 19:34   ` Eric Sandeen
  2022-05-10  9:38   ` Christoph Hellwig
  1 sibling, 0 replies; 10+ messages in thread
From: Eric Sandeen @ 2022-05-05 19:34 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: linux-xfs

On 5/5/22 11:04 AM, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> gcc 11 warns that stack_f doesn't allocate a sufficiently large buffer
> to hold the printf output.  I don't think the io cursor stack is really
> going to grow to 4 billion levels deep, but let's fix this anyway.
> 
> Signed-off-by: Darrick J. Wong <djwong@kernel.org>

Reviewed-by: Eric Sandeen <sandeen@redhat.com>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/2] xfs_scrub: move to mallinfo2 when available
  2022-05-05 16:04 ` [PATCH 1/2] xfs_scrub: move to mallinfo2 when available Darrick J. Wong
  2022-05-05 19:28   ` Eric Sandeen
@ 2022-05-10  9:38   ` Christoph Hellwig
  1 sibling, 0 replies; 10+ messages in thread
From: Christoph Hellwig @ 2022-05-10  9:38 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/2] xfs_db: fix a complaint about a printf buffer overrun
  2022-05-05 16:04 ` [PATCH 2/2] xfs_db: fix a complaint about a printf buffer overrun Darrick J. Wong
  2022-05-05 19:34   ` Eric Sandeen
@ 2022-05-10  9:38   ` Christoph Hellwig
  1 sibling, 0 replies; 10+ messages in thread
From: Christoph Hellwig @ 2022-05-10  9:38 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Thu, May 05, 2022 at 09:04:10AM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> gcc 11 warns that stack_f doesn't allocate a sufficiently large buffer
> to hold the printf output.  I don't think the io cursor stack is really
> going to grow to 4 billion levels deep, but let's fix this anyway.

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 3/2] xfs: note the removal of XFS_IOC_FSSETDM in the documentation
  2022-05-05 16:03 [PATCHSET 0/2] xfsprogs: random fixes Darrick J. Wong
  2022-05-05 16:04 ` [PATCH 1/2] xfs_scrub: move to mallinfo2 when available Darrick J. Wong
  2022-05-05 16:04 ` [PATCH 2/2] xfs_db: fix a complaint about a printf buffer overrun Darrick J. Wong
@ 2022-05-10 21:30 ` Darrick J. Wong
  2022-05-12 18:31   ` Eric Sandeen
  2 siblings, 1 reply; 10+ messages in thread
From: Darrick J. Wong @ 2022-05-10 21:30 UTC (permalink / raw)
  To: sandeen; +Cc: linux-xfs

From: Darrick J. Wong <djwong@kernel.org>

Update the documentation to note the removal of this ioctl.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 man/man3/handle.3 |    1 +
 man/man3/xfsctl.3 |    2 ++
 2 files changed, 3 insertions(+)

diff --git a/man/man3/handle.3 b/man/man3/handle.3
index 154c0f29..2eb2bbcd 100644
--- a/man/man3/handle.3
+++ b/man/man3/handle.3
@@ -124,6 +124,7 @@ and
 fields in an XFS on-disk inode. It is analogous to the
 .BR "XFS_IOC_FSSETDM xfsctl" (3)
 command, except that a handle is specified instead of a file.
+This function is not supported on Linux.
 .PP
 The
 .BR free_handle ()
diff --git a/man/man3/xfsctl.3 b/man/man3/xfsctl.3
index a591e61a..4a0d4d08 100644
--- a/man/man3/xfsctl.3
+++ b/man/man3/xfsctl.3
@@ -104,6 +104,7 @@ This command is restricted to root or to processes with device
 management capabilities.
 Its sole purpose is to allow backup and restore programs to restore the
 aforementioned critical on-disk inode fields.
+This ioctl is not supported as of Linux 5.5.
 
 .TP
 .B XFS_IOC_DIOINFO
@@ -318,6 +319,7 @@ functions (see
 .BR open_by_handle (3)).
 They are all subject to change and should not be called directly
 by applications.
+XFS_IOC_FSSETDM_BY_HANDLE is not supported as of Linux 5.5.
 
 .SS Filesystem Operations
 In order to effect one of the following operations, the pathname

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/2] xfs: note the removal of XFS_IOC_FSSETDM in the documentation
  2022-05-10 21:30 ` [PATCH 3/2] xfs: note the removal of XFS_IOC_FSSETDM in the documentation Darrick J. Wong
@ 2022-05-12 18:31   ` Eric Sandeen
  0 siblings, 0 replies; 10+ messages in thread
From: Eric Sandeen @ 2022-05-12 18:31 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: linux-xfs

On 5/10/22 4:30 PM, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> Update the documentation to note the removal of this ioctl>
> 
> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCHSET 0/2] xfsprogs: random fixes
@ 2021-07-28 21:16 Darrick J. Wong
  0 siblings, 0 replies; 10+ messages in thread
From: Darrick J. Wong @ 2021-07-28 21:16 UTC (permalink / raw)
  To: sandeen, djwong; +Cc: Dave Chinner, linux-xfs

Hi all,

Here are a couple more random fixes.

If you're going to start using this mess, you probably ought to just
pull from my git trees, which are linked below.

This is an extraordinary way to destroy everything.  Enjoy!
Comments and questions are, as always, welcome.

--D

kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=random-fixes

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=random-fixes

fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=random-fixes
---
 quota/state.c   |    3 ++-
 repair/phase6.c |   18 ++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-05-12 18:32 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-05 16:03 [PATCHSET 0/2] xfsprogs: random fixes Darrick J. Wong
2022-05-05 16:04 ` [PATCH 1/2] xfs_scrub: move to mallinfo2 when available Darrick J. Wong
2022-05-05 19:28   ` Eric Sandeen
2022-05-10  9:38   ` Christoph Hellwig
2022-05-05 16:04 ` [PATCH 2/2] xfs_db: fix a complaint about a printf buffer overrun Darrick J. Wong
2022-05-05 19:34   ` Eric Sandeen
2022-05-10  9:38   ` Christoph Hellwig
2022-05-10 21:30 ` [PATCH 3/2] xfs: note the removal of XFS_IOC_FSSETDM in the documentation Darrick J. Wong
2022-05-12 18:31   ` Eric Sandeen
  -- strict thread matches above, loose matches on Subject: below --
2021-07-28 21:16 [PATCHSET 0/2] xfsprogs: random fixes Darrick J. Wong

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.