update to version 3.5.1

This commit is contained in:
wang--ge 2023-10-10 10:38:56 +08:00
parent b69e835d02
commit 9cae5f8c92
7 changed files with 11 additions and 212 deletions

View File

@ -1,39 +0,0 @@
From 17fb470356a6d55988f05ac70f06b382ef982604 Mon Sep 17 00:00:00 2001
From: Sergei Trofimovich <slyich@gmail.com>
Date: Sun, 7 Nov 2021 09:00:31 +0000
Subject: [PATCH] gfs2/edit: always use "%s"-style format for printf()-style
functions
`ncurses-6.3` added printf-style function attributes and now makes
it easier to catch cases when user input is used in place of format
string when built with CFLAGS=-Werror=format-security:
hexedit.c:227:9: error: format not a string literal and no format arguments [-Werror=format-security]
227 | printw(s2);
| ^~~~~~
Let's wrap all the missing places with "%s" format.
---
gfs2/edit/hexedit.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gfs2/edit/hexedit.c b/gfs2/edit/hexedit.c
index 798639b5..88ee3e5f 100644
--- a/gfs2/edit/hexedit.c
+++ b/gfs2/edit/hexedit.c
@@ -221,10 +221,10 @@ static void gfs2instr(const char *s1, const char *s2)
{
COLORS_HIGHLIGHT;
move(line,0);
- printw(s1);
+ printw("%s", s1);
COLORS_NORMAL;
move(line,17);
- printw(s2);
+ printw("%s", s2);
line++;
}
--
2.27.0

View File

@ -1,25 +0,0 @@
From f2cced91a440de26b30adf6a82f8bd459a04a4c2 Mon Sep 17 00:00:00 2001
From: penelope <anchor_cool@163.com>
Date: Thu, 10 Mar 2022 21:30:47 +0800
Subject: [PATCH] fix error format in gfs2hex
---
gfs2/edit/gfs2hex.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gfs2/edit/gfs2hex.c b/gfs2/edit/gfs2hex.c
index 62d5cab..b8c027e 100644
--- a/gfs2/edit/gfs2hex.c
+++ b/gfs2/edit/gfs2hex.c
@@ -376,7 +376,7 @@ static void gfs2_inum_print2(const char *title,struct gfs2_inum *no)
if (termlines) {
check_highlight(TRUE);
move(line,2);
- printw(title);
+ printw("%s",title);
check_highlight(FALSE);
}
else
--
2.27.0

View File

@ -1,82 +0,0 @@
From 2010383c860ef8ca2a80e6394b9cb89942a426e0 Mon Sep 17 00:00:00 2001
From: Andrew Price <anprice@redhat.com>
Date: Thu, 18 Mar 2021 17:30:53 +0000
Subject: [PATCH] gfs2_jadd: Use fallocate to preallocate journals
Fall back to writes for ancient kernels and use larger writes in that
case to reduce the chance of fragmentation.
Signed-off-by: Andrew Price <anprice@redhat.com>
---
gfs2/mkfs/main_jadd.c | 48 +++++++++++++++++++++++++++++++++++--------
1 file changed, 40 insertions(+), 8 deletions(-)
diff --git a/gfs2/mkfs/main_jadd.c b/gfs2/mkfs/main_jadd.c
index 7583ba0f..0a18bfb2 100644
--- a/gfs2/mkfs/main_jadd.c
+++ b/gfs2/mkfs/main_jadd.c
@@ -480,6 +480,43 @@ static uint64_t find_block_address(int fd, off_t offset, unsigned bsize)
}
#endif
+static int alloc_new_journal(int fd, unsigned bytes)
+{
+#define ALLOC_BUF_SIZE (4 << 20)
+ unsigned left = bytes;
+ int error;
+ char *buf;
+
+ error = fallocate(fd, 0, 0, bytes);
+ if (error == 0)
+ return 0;
+ if (errno != EOPNOTSUPP)
+ goto out_errno;
+
+ /* No fallocate support, fall back to writes */
+ buf = calloc(1, ALLOC_BUF_SIZE);
+ if (buf == NULL)
+ goto out_errno;
+
+ while (left > 0) {
+ unsigned sz = ALLOC_BUF_SIZE;
+
+ if (left < ALLOC_BUF_SIZE)
+ sz = left;
+
+ if (pwrite(fd, buf, sz, bytes - left) != sz) {
+ free(buf);
+ goto out_errno;
+ }
+ left -= sz;
+ }
+ free(buf);
+ return 0;
+out_errno:
+ perror("Failed to allocate space for new journal");
+ return -1;
+}
+
static int add_j(struct gfs2_sbd *sdp, struct jadd_opts *opts)
{
int fd, error = 0;
@@ -496,14 +533,9 @@ static int add_j(struct gfs2_sbd *sdp, struct jadd_opts *opts)
if ((error = set_flags(fd, JA_FL_CLEAR, FS_JOURNAL_DATA_FL)))
goto close_fd;
- memset(buf, 0, sdp->bsize);
- for (x=0; x<blocks; x++) {
- if (write(fd, buf, sdp->bsize) != sdp->bsize) {
- perror("add_j write");
- error = -1;
- goto close_fd;
- }
- }
+ error = alloc_new_journal(fd, sdp->jsize << 20);
+ if (error != 0)
+ goto close_fd;
if ((error = lseek(fd, 0, SEEK_SET)) < 0) {
perror("add_j lseek");
--
2.27.0

View File

@ -1,57 +0,0 @@
From 657bbcfb7114b0246c6ce72cde75fcacb9a0d61b Mon Sep 17 00:00:00 2001
From: Andrew Price <anprice@redhat.com>
Date: Thu, 18 Mar 2021 17:50:16 +0000
Subject: [PATCH] gfs2_jadd: Don't fsync after each block written
gfs2_jadd has always called fsync() after writing each block of the
journal. There doesn't seem to be any need for that so take the fsync()
call out of the loop.
Add an additional fsync() after preallocation to make sure we're in good
shape before writing the log headers.
In my tests this reduces the time to add one journal from 5 minutes to
9 seconds.
Signed-off-by: Andrew Price <anprice@redhat.com>
---
gfs2/mkfs/main_jadd.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/gfs2/mkfs/main_jadd.c b/gfs2/mkfs/main_jadd.c
index 0a18bfb2..2bd0f7b0 100644
--- a/gfs2/mkfs/main_jadd.c
+++ b/gfs2/mkfs/main_jadd.c
@@ -537,6 +537,11 @@ static int add_j(struct gfs2_sbd *sdp, struct jadd_opts *opts)
if (error != 0)
goto close_fd;
+ error = fsync(fd);
+ if (error != 0) {
+ perror("Failed to sync journal metadata");
+ goto close_fd;
+ }
if ((error = lseek(fd, 0, SEEK_SET)) < 0) {
perror("add_j lseek");
goto close_fd;
@@ -580,12 +585,12 @@ static int add_j(struct gfs2_sbd *sdp, struct jadd_opts *opts)
seq = 0;
off += sdp->bsize;
- if ((error = fsync(fd))) {
- perror("add_j fsync");
- goto close_fd;
- }
}
-
+ error = fsync(fd);
+ if (error != 0) {
+ perror("Failed to sync journal metadata");
+ goto close_fd;
+ }
sprintf(new_name, "journal%u", opts->journals);
error = rename2system(opts, opts->jindex, new_name);
if (error < 0 && errno != EEXIST){
--
2.39.0.windows.2

Binary file not shown.

BIN
gfs2-utils-3.5.1.tar.gz Normal file

Binary file not shown.

View File

@ -1,16 +1,11 @@
Name: gfs2-utils
Version: 3.4.1
Release: 4
Version: 3.5.1
Release: 1
Summary: Utilities for managing the global file system (GFS2
License: GPLv2+ and LGPLv2+
URL: https://pagure.io/gfs2-utils
Source0: https://releases.pagure.org/gfs2-utils/gfs2-utils-%{version}.tar.gz
# https://github.com/andyprice/gfs2-utils/commit/17fb470
Patch0: 0001-gfs2-edit-always-use-s-style-format-for-printf-style.patch
Patch1: 0002-fix-error-format-in-gfs2hex.patch
Patch2: 0003-gfs2_jadd-Use-fallocate-to-preallocate-journals.patch
Patch3: 0004-gfs2_jadd-Don-t-fsync-after-each-block-written.patch
BuildRequires: ncurses-devel kernel-headers automake libtool zlib-devel gettext-devel
BuildRequires: bison flex libblkid-devel libuuid-devel check-devel bzip2-devel make
@ -33,14 +28,18 @@ modifying, and correcting inconsistencies in GFS2 file systems.
make check || { cat tests/testsuite.log; exit 1; }
%install
make -C gfs2 install DESTDIR=%{buildroot}
%make_install
rm -f %{buildroot}/usr/sbin/gfs2_trace
rm -f %{buildroot}/usr/sbin/gfs2_lockcapture
rm -f %{buildroot}%{_mandir}/man8/gfs2_trace.8
rm -f %{buildroot}%{_mandir}/man8/gfs2_lockcapture.8
rm -f %{buildroot}%{_defaultdocdir}/gfs2-utils/COPYING.*
rm -f %{buildroot}%{_defaultdocdir}/gfs2-utils/COPYRIGHT
rm -f %{buildroot}%{_defaultdocdir}/gfs2-utils/README.licence
%files
%license doc/COPYING.* doc/COPYRIGHT doc/README.licence
%license doc/COPYING.* doc/COPYRIGHT doc/README.licence
%doc doc/*.txt doc/README.contributing
%{_sbindir}/gfs2*
%{_sbindir}/*.gfs2
%{_sbindir}/tunegfs2
@ -56,6 +55,9 @@ rm -f %{buildroot}%{_mandir}/man8/gfs2_lockcapture.8
%changelog
* Tue Oct 10 2023 Ge Wang <wang__ge@126.com> - 3.5.1-1
- Update to version 3.5.1
* Mon Jan 9 2023 yaoguangzhong <yaoguangzhong@xfusion.com> - 3.4.1-4
- backport gfs2_jadd: don't fsync after each block written