Compare commits

...

10 Commits

Author SHA1 Message Date
openeuler-ci-bot
52fce635af
!12 backport gfs2_jadd: Don't fsync after each block written
From: @ikernel-mryao 
Reviewed-by: @Charlie_li 
Signed-off-by: @Charlie_li
2023-01-09 06:23:10 +00:00
yaoguangzhong
11436492b6 backport gfs2_jadd: Don't fsync after each block written
From: Andrew Price <anprice@redhat.com>
From commit 657bbcfb7114b0246c6ce72cde75fcacb9a0d61b
Signed-off-by: Guangzhong Yao <yaoguangzhong@xfusion.com>
2023-01-09 12:53:51 +08:00
openeuler-ci-bot
04c246130c
!9 backport gfs2_jadd: Use fallocate to preallocate journals
From: @ikernel-mryao 
Reviewed-by: @Charlie_li 
Signed-off-by: @Charlie_li
2023-01-07 11:26:32 +00:00
yaoguangzhong
0478d09ded backport gfs2_jadd: Use fallocate to preallocate journals
From Signed-off-by: Andrew Price <anprice@redhat.com>
commit 2010383c860ef8ca2a80e6394b9cb89942a426e0
Signed-off-by: Guangzhong Yao <yaoguangzhong@xfusion.com>
2023-01-07 16:29:42 +08:00
openeuler-ci-bot
c65c39779c
!7 Upgrade to 3.4.1
From: @starlet-dx 
Reviewed-by: @gitee-cmd 
Signed-off-by: @gitee-cmd
2022-10-20 13:03:40 +00:00
starlet-dx
8c53a50a5d upgrade to 3.4.1 2022-10-20 17:52:00 +08:00
openeuler-ci-bot
d848a6c01a
!4 解决gfs2-utils在22.03-lts分支编译失败 eorror: format not a string literal and no format arguments
From: @penelope_y 
Reviewed-by: @ruebb 
Signed-off-by: @ruebb
2022-03-11 03:12:02 +00:00
penelope
1152905fef fix some error 2022-03-11 09:50:08 +08:00
openeuler-ci-bot
cbb0719b65 !2 Add gfs2-utils yaml file
Merge pull request !2 from 雷炬/master
2020-05-09 17:03:39 +08:00
lei_ju
eaf086b18f Increase gfs2-utils yaml 2020-05-08 17:59:42 +08:00
8 changed files with 239 additions and 16 deletions

View File

@ -0,0 +1,39 @@
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

@ -0,0 +1,25 @@
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

@ -0,0 +1,82 @@
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

@ -0,0 +1,57 @@
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.4.1.tar.gz Normal file

Binary file not shown.

View File

@ -1,14 +1,19 @@
Name: gfs2-utils
Version: 3.2.0
Release: 5
Summary: Global Filesystem Utilities
Version: 3.4.1
Release: 3
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
BuildRequires: bison flex libblkid-devel libuuid-devel check-devel bzip2-devel make
%description
The gfs2-utils package contains a number of utilities for creating, checking,
@ -16,9 +21,8 @@ modifying, and correcting inconsistencies in GFS2 file systems.
%package_help
%prep
%autosetup -n %{name}-%{version} -p1
%autosetup -p1
%build
./autogen.sh
@ -30,27 +34,40 @@ make check || { cat tests/testsuite.log; exit 1; }
%install
make -C gfs2 install DESTDIR=%{buildroot}
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
%files
%defattr(-,root,root)
%license doc/COPYING.* doc/COPYRIGHT doc/README.licence
%license doc/COPYING.* doc/COPYRIGHT doc/README.licence
%{_sbindir}/gfs2*
%{_sbindir}/*.gfs2
%{_sbindir}/tunegfs2
%{_sbindir}/glocktop
%{_prefix}/lib/udev/rules.d/*.rules
%exclude %{_sbindir}/gfs2_trace
%exclude %{_sbindir}/gfs2_lockcapture
%{_libexecdir}/gfs2_withdraw_helper
%{_prefix}/lib/udev/rules.d/82-gfs2-withdraw.rules
%files help
%defattr(-,root,root)
%doc doc/*.txt doc/README.contributing
%{_mandir}/man8/*gfs2*
%{_mandir}/man8/glocktop*
%{_mandir}/man5/*
%{_mandir}/man8/*
%exclude %{_mandir}/man8/gfs2_trace.8.gz
%exclude %{_mandir}/man8/gfs2_lockcapture.8.gz
%changelog
* Mon Jan 9 2023 yaoguangzhong <yaoguangzhong@xfusion.com> - 3.4.1-3
- backport gfs2_jadd: don't fsync after each block written
* Sat Jan 7 2023 yaoguangzhong <yaoguangzhong@xfusion.com> - 3.4.1-2
- backport gfs2_jadd: Use fallocate to preallocate journals
* Thu Oct 20 2022 yaoxin <yaoxin30@h-partners.com> - 3.4.1-1
- upgrade to 3.4.1
* Fri Mar 11 2022 yangping <yangping69@huawei.com> - 3.2.0-6
- Fix some error format arguments
* Tue Jan 21 2020 daiqianwen <daiqianwen@huawei.com> - 3.2.0-5
- Type:bugfix
- ID:NA
@ -59,4 +76,3 @@ make -C gfs2 install DESTDIR=%{buildroot}
* Sat Nov 23 2019 openEuler Buildteam <buildteam@openeuler.org> - 3.2.0-4
- Package Init

4
gfs2-utils.yaml Normal file
View File

@ -0,0 +1,4 @@
version_control: git
src_repo: https://pagure.io/gfs2-utils.git
tag_prefix: ^
seperator: .