cluster: RHEL6 - rgmanager: Fix error logging when building the resource tree
by Ryan McCabe
Gitweb: http://git.fedorahosted.org/git/?p=cluster.git;a=commitdiff;h=dc5096d7d56...
Commit: dc5096d7d567a4ff36888ba43695d7fb24511aa4
Parent: 78dd4d69d8b56f5eadfbfaf6883836cc017cb418
Author: Ryan McCabe <rmccabe(a)redhat.com>
AuthorDate: Wed Feb 5 09:53:14 2014 -0500
Committer: Ryan McCabe <rmccabe(a)redhat.com>
CommitterDate: Wed Feb 5 09:53:14 2014 -0500
rgmanager: Fix error logging when building the resource tree
Change printf statements to logt_print when attempting to log errors
when building the resource tree.
Original patch from Shane Bradley <sbradley(a)redhat.com>
Resolves: rhbz#1053739
Signed-off-by: Ryan McCabe <rmccabe(a)redhat.com>
---
rgmanager/src/daemons/restree.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/rgmanager/src/daemons/restree.c b/rgmanager/src/daemons/restree.c
index ea5e1c5..bc98aa6 100644
--- a/rgmanager/src/daemons/restree.c
+++ b/rgmanager/src/daemons/restree.c
@@ -591,7 +591,7 @@ do_load_resource(int ccsfd, char *base,
}
if (store_resource(reslist, curres) != 0) {
- printf("Error storing %s resource\n",
+ logt_print(LOG_WARNING, "Error storing %s resource\n",
curres->r_rule->rr_type);
destroy_resource(curres);
return -1;
@@ -604,7 +604,7 @@ do_load_resource(int ccsfd, char *base,
curres = find_resource_by_ref(reslist, rule->rr_type,
ref);
if (!curres) {
- printf("Error: Reference to nonexistent "
+ logt_print(LOG_WARNING, "Error: Reference to nonexistent "
"resource %s (type %s)\n", ref,
rule->rr_type);
free(ref);
@@ -612,7 +612,7 @@ do_load_resource(int ccsfd, char *base,
}
if (curres->r_flags & RF_INLINE) {
- printf("Error: Reference to inlined "
+ logt_print(LOG_WARNING, "Error: Reference to inlined "
"resource %s (type %s) is illegal\n",
ref, rule->rr_type);
free(ref);
@@ -623,7 +623,7 @@ do_load_resource(int ccsfd, char *base,
/* Load it if its max refs hasn't been exceeded */
if (rule->rr_maxrefs && (curres->r_refs >= rule->rr_maxrefs)){
- printf("Warning: Max references exceeded for resource"
+ logt_print(LOG_WARNING, "Max references exceeded for resource"
" %s (type %s)\n", curres->r_attrs[0].ra_name,
rule->rr_type);
return -1;
10 years, 2 months
cluster: RHEL6 - libgfs2: Fix up remove_mtab_entry
by Andrew Price
Gitweb: http://git.fedorahosted.org/git/?p=cluster.git;a=commitdiff;h=78dd4d69d8b...
Commit: 78dd4d69d8b56f5eadfbfaf6883836cc017cb418
Parent: 2d06dd478c27bf864ba1a5ac0cbb1ba6c3ed947f
Author: Andrew Price <anprice(a)redhat.com>
AuthorDate: Tue Feb 4 00:00:05 2014 -0600
Committer: Andrew Price <anprice(a)redhat.com>
CommitterDate: Tue Feb 4 12:21:11 2014 +0000
libgfs2: Fix up remove_mtab_entry
mkstemp was creating the temporary mtab file with overly tight
permissions causing /etc/mtab to end up with an 0600 mode instead of the
regular 0644. This patch resets the mode to 0644 by calling fchmod on
the file descriptor returned by mkstemp.
It also removes a superfluous close() call and sets the temp filename
char array on initialisation instead of using strcpy().
Resolves: rhbz#1059853
Signed-off-by: Andrew Price <anprice(a)redhat.com>
---
gfs2/libgfs2/misc.c | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/gfs2/libgfs2/misc.c b/gfs2/libgfs2/misc.c
index 3989bf1..8e0ca6f 100644
--- a/gfs2/libgfs2/misc.c
+++ b/gfs2/libgfs2/misc.c
@@ -217,7 +217,7 @@ static void remove_mtab_entry(struct gfs2_sbd *sdp)
{
FILE *mtab, *mtabnew;
struct mntent *mountent;
- char mtab_tmpfn[PATH_MAX];
+ char mtab_tmpfn[] = "/etc/mtab.XXXXXX";
int error, fd;
mode_t mask;
@@ -225,7 +225,7 @@ static void remove_mtab_entry(struct gfs2_sbd *sdp)
if (mtab == NULL)
die("Couldn't open /etc/mtab for writing: %s\n",
strerror(errno));
- strcpy(mtab_tmpfn, "/etc/mtab.XXXXXX");
+
mask = umask(S_IXUSR | S_IRWXG | S_IRWXO);
fd = mkstemp(mtab_tmpfn);
umask(mask);
@@ -233,6 +233,9 @@ static void remove_mtab_entry(struct gfs2_sbd *sdp)
die("Couldn't open temporary mtab file for writing: %s\n",
strerror(errno));
+ if (fchmod(fd, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH))
+ die("Couldn't change mode of temporary mtab: %s\n", strerror(errno));
+
mtabnew = fdopen(fd, "wt");
if (mtabnew == NULL)
die("Couldn't open %s for writing : %s\n", mtab_tmpfn,
@@ -247,8 +250,7 @@ static void remove_mtab_entry(struct gfs2_sbd *sdp)
}
endmntent(mtab);
- fclose(mtabnew);
- close(fd);
+ fclose(mtabnew); /* Closes underlying fd */
if (rename(mtab_tmpfn, "/etc/mtab"))
fprintf(stderr, "Unable to remove mount entry from mtab.\n");
}
10 years, 3 months
gfs2-utils: RHEL7 - mkfs.gfs2 tests: Enable debug output
by Andrew Price
Gitweb: http://git.fedorahosted.org/git/?p=gfs2-utils.git;a=commitdiff;h=9a070d60...
Commit: 9a070d60d70937da51f1430c6626327c971dec33
Parent: 979c86c6e76aa6a879c2a163f8d20653a4a759da
Author: Andrew Price <anprice(a)redhat.com>
AuthorDate: Wed Jan 22 18:46:53 2014 +0000
Committer: Andrew Price <anprice(a)redhat.com>
CommitterDate: Mon Feb 3 15:40:24 2014 +0000
mkfs.gfs2 tests: Enable debug output
Enable debug output of mkfs.gfs2 tests and define the base options as a
shell variable to make them easier to maintain.
Resolves: rhbz#1059443
Signed-off-by: Andrew Price <anprice(a)redhat.com>
---
tests/atlocal.in | 1 +
tests/mkfs.at | 46 +++++++++++++++++++++++-----------------------
2 files changed, 24 insertions(+), 23 deletions(-)
diff --git a/tests/atlocal.in b/tests/atlocal.in
index 660c87a..b021b13 100644
--- a/tests/atlocal.in
+++ b/tests/atlocal.in
@@ -1,5 +1,6 @@
GFS_TGT="$abs_builddir/testvol"
GFS_TGT_SZ=10
+GFS_MKFS="mkfs.gfs2 -O -D"
gfs_max_blocks()
{
diff --git a/tests/mkfs.at b/tests/mkfs.at
index a3973af..2616109 100644
--- a/tests/mkfs.at
+++ b/tests/mkfs.at
@@ -2,70 +2,70 @@ AT_TESTED([mkfs.gfs2])
AT_BANNER([mkfs.gfs2 tests])
AT_SETUP([Locking protocol validation])
-AT_CHECK([mkfs.gfs2 -O -p badprotocol $GFS_TGT], 255, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p badprotocol $GFS_TGT], 255, [ignore], [ignore])
AT_CLEANUP
AT_SETUP([Resource group size validation])
-AT_CHECK([mkfs.gfs2 -O -p lock_nolock -r 31 $GFS_TGT], 255, [ignore], [ignore])
-AT_CHECK([mkfs.gfs2 -O -p lock_nolock -r 2049 $GFS_TGT], 255, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -r 31 $GFS_TGT], 255, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -r 2049 $GFS_TGT], 255, [ignore], [ignore])
AT_CLEANUP
AT_SETUP([Journal size validation])
-AT_CHECK([mkfs.gfs2 -O -p lock_nolock -J 7 $GFS_TGT], 255, [ignore], [ignore])
-AT_CHECK([mkfs.gfs2 -O -p lock_nolock -J 1025 $GFS_TGT], 255, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -J 7 $GFS_TGT], 255, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -J 1025 $GFS_TGT], 255, [ignore], [ignore])
AT_CLEANUP
AT_SETUP([Block count validation])
GFS_TGT_REGEN
-AT_CHECK([mkfs.gfs2 -O -p lock_nolock -b 512 $GFS_TGT $(($(gfs_max_blocks 512)+1))], 255, [ignore], [ignore])
-AT_CHECK([mkfs.gfs2 -O -p lock_nolock -b 4096 $GFS_TGT $(($(gfs_max_blocks 4096)+1))], 255, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -b 512 $GFS_TGT $(($(gfs_max_blocks 512)+1))], 255, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -b 4096 $GFS_TGT $(($(gfs_max_blocks 4096)+1))], 255, [ignore], [ignore])
AT_CLEANUP
AT_SETUP([Quota change file size validation])
-AT_CHECK([mkfs.gfs2 -O -p lock_nolock -c 0 $GFS_TGT], 255, [ignore], [ignore])
-AT_CHECK([mkfs.gfs2 -O -p lock_nolock -c 65 $GFS_TGT], 255, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -c 0 $GFS_TGT], 255, [ignore], [ignore])
+AT_CHECK([$GFS_MKFS -p lock_nolock -c 65 $GFS_TGT], 255, [ignore], [ignore])
AT_CLEANUP
AT_SETUP([Locking protocols])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock $GFS_TGT])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_dlm -t foo:bar $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_dlm -t foo:bar $GFS_TGT])
AT_CLEANUP
AT_SETUP([Valid block sizes 512-4096])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -b 512 $GFS_TGT])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -b 1024 $GFS_TGT])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -b 2048 $GFS_TGT])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -b 4096 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -b 512 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -b 1024 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -b 2048 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -b 4096 $GFS_TGT])
AT_CLEANUP
AT_SETUP([Max. blocks, min. block size])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -b 512 $GFS_TGT $(gfs_max_blocks 512)])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -b 512 $GFS_TGT $(gfs_max_blocks 512)])
AT_CLEANUP
AT_SETUP([Max. blocks, max. block size])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -b 4096 $GFS_TGT $(util_max_blocks 4096)])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -b 4096 $GFS_TGT $(util_max_blocks 4096)])
AT_CLEANUP
AT_SETUP([Max. resource group size])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -r 2048 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -r 2048 $GFS_TGT])
AT_CLEANUP
AT_SETUP([Min. resource group size])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -r 32 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -r 32 $GFS_TGT])
AT_CLEANUP
AT_SETUP([Max. journal size])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -J 1024 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -J 1024 $GFS_TGT])
AT_CLEANUP
AT_SETUP([Min. journal size])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -J 8 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -J 8 $GFS_TGT])
AT_CLEANUP
AT_SETUP([Max. quota change file size])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -c 64 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -c 64 $GFS_TGT])
AT_CLEANUP
AT_SETUP([Min. quota change file size])
-GFS_FSCK_CHECK([mkfs.gfs2 -O -p lock_nolock -c 1 $GFS_TGT])
+GFS_FSCK_CHECK([$GFS_MKFS -p lock_nolock -c 1 $GFS_TGT])
AT_CLEANUP
10 years, 3 months
gfs2-utils: RHEL7 - gfs2_edit: Convert fssize to bytes before reporting fs size
by Andrew Price
Gitweb: http://git.fedorahosted.org/git/?p=gfs2-utils.git;a=commitdiff;h=979c86c6...
Commit: 979c86c6e76aa6a879c2a163f8d20653a4a759da
Parent: 0d5b21adc867da3c738474ec2bcd1cfa625f8bb6
Author: Andrew Price <anprice(a)redhat.com>
AuthorDate: Fri Jan 31 06:30:00 2014 -0600
Committer: Andrew Price <anprice(a)redhat.com>
CommitterDate: Mon Feb 3 14:45:54 2014 +0000
gfs2_edit: Convert fssize to bytes before reporting fs size
gfs2_edit savemeta wasn't converting sbd.fssize to bytes before converting it
to a human-friendly number. This patch adds that multiplier along with a sanity
test for savemeta/restoremeta.
Resolves: rhbz#1059443
Signed-off-by: Andrew Price <anprice(a)redhat.com>
---
gfs2/edit/savemeta.c | 2 +-
tests/Makefile.am | 1 +
tests/edit.at | 15 +++++++++++++++
tests/testsuite.at | 1 +
4 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index 986fdbe..b4c85d6 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -736,7 +736,7 @@ void savemeta(char *out_fn, int saveoption, int gziplevel)
gfs1_ri_update(&sbd, 0, &rgcount, 0);
else
ri_update(&sbd, 0, &rgcount, &sane);
- printf("Done. File system size: %s\n\n", anthropomorphize(sbd.fssize));
+ printf("Done. File system size: %s\n\n", anthropomorphize(sbd.fssize * sbd.bsize));
fflush(stdout);
get_journal_inode_blocks();
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 616a44e..5f02d3a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -41,6 +41,7 @@ TESTSUITE_AT = \
testsuite.at \
mkfs.at \
fsck.at \
+ edit.at \
libgfs2.at
TESTSUITE = $(srcdir)/testsuite
diff --git a/tests/edit.at b/tests/edit.at
new file mode 100644
index 0000000..014d118
--- /dev/null
+++ b/tests/edit.at
@@ -0,0 +1,15 @@
+AT_TESTED([gfs2_edit])
+AT_BANNER([gfs2_edit tests])
+
+AT_SETUP([Savemeta/restoremeta, defaults])
+GFS_TGT_REGEN
+AT_CHECK([$GFS_MKFS -p lock_nolock $GFS_TGT $(($(gfs_max_blocks 4096)/2))], 0, [ignore], [ignore])
+AT_CHECK([gfs2_edit savemeta $GFS_TGT test.meta > savemeta.log], 0, [ignore], [ignore])
+AT_CHECK([head -2 savemeta.log], 0, [There are 2621440 blocks of 4096 bytes in the destination device.
+Reading resource groups...Done. File system size: 4.1023G
+], [ignore])
+GFS_TGT_REGEN
+AT_CHECK([gfs2_edit restoremeta test.meta $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([fsck.gfs2 -n $GFS_TGT], 0, [ignore], [ignore])
+
+AT_CLEANUP
diff --git a/tests/testsuite.at b/tests/testsuite.at
index fc90879..fe781a7 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -22,4 +22,5 @@ AT_COLOR_TESTS
m4_include([mkfs.at])
m4_include([fsck.at])
+m4_include([edit.at])
m4_include([libgfs2.at])
10 years, 3 months
gfs2-utils: master - gfs2-utils: Remove duplicate definitions of gfs1 structs
by Andrew Price
Gitweb: http://git.fedorahosted.org/git/?p=gfs2-utils.git;a=commitdiff;h=5bdaf5bb...
Commit: 5bdaf5bb6f4e4525fef9c549eacd80a6ba037e2a
Parent: 45b761f6106cb11b024dd362da15343b7e612a80
Author: Andrew Price <anprice(a)redhat.com>
AuthorDate: Mon Feb 3 12:26:48 2014 +0000
Committer: Andrew Price <anprice(a)redhat.com>
CommitterDate: Mon Feb 3 12:26:48 2014 +0000
gfs2-utils: Remove duplicate definitions of gfs1 structs
gfs2_edit and gfs2_convert both defined some gfs1 structures which were
identical to those defined in libgfs2.h. This removes them in preference
of the libgfs2 definitions.
Signed-off-by: Andrew Price <anprice(a)redhat.com>
---
gfs2/convert/gfs2_convert.c | 85 +++++++++----------------------------------
gfs2/edit/gfs2hex.c | 27 ++------------
2 files changed, 21 insertions(+), 91 deletions(-)
diff --git a/gfs2/convert/gfs2_convert.c b/gfs2/convert/gfs2_convert.c
index 8ab3981..55db4fa 100644
--- a/gfs2/convert/gfs2_convert.c
+++ b/gfs2/convert/gfs2_convert.c
@@ -69,57 +69,6 @@
#define DIV_RU(x, y) (((x) + (y) - 1) / (y))
-struct gfs1_rgrp {
- struct gfs2_meta_header rg_header; /* hasn't changed from gfs1 to 2 */
- uint32_t rg_flags;
- uint32_t rg_free; /* Number (qty) of free data blocks */
- /* Dinodes are USEDMETA, but are handled separately from other METAs */
- uint32_t rg_useddi; /* Number (qty) of dinodes (used or free) */
- uint32_t rg_freedi; /* Number (qty) of unused (free) dinodes */
- struct gfs2_inum rg_freedi_list; /* hasn't changed from gfs1 to 2 */
- /* These META statistics do not include dinodes (used or free) */
- uint32_t rg_usedmeta; /* Number (qty) of used metadata blocks */
- uint32_t rg_freemeta; /* Number (qty) of unused metadata blocks */
- char rg_reserved[64];
-};
-
-struct gfs1_jindex {
- uint64_t ji_addr; /* starting block of the journal */
- uint32_t ji_nsegment; /* number (quantity) of segments in journal */
- uint32_t ji_pad;
-
- char ji_reserved[64];
-};
-
-struct gfs1_sb {
- /* Order is important; need to be able to read old superblocks
- in order to support on-disk version upgrades */
- struct gfs2_meta_header sb_header;
-
- uint32_t sb_fs_format; /* GFS_FORMAT_FS (on-disk version) */
- uint32_t sb_multihost_format; /* GFS_FORMAT_MULTI */
- uint32_t sb_flags; /* ?? */
-
- uint32_t sb_bsize; /* fundamental FS block size in bytes */
- uint32_t sb_bsize_shift; /* log2(sb_bsize) */
- uint32_t sb_seg_size; /* Journal segment size in FS blocks */
-
- /* These special inodes do not appear in any on-disk directory. */
- struct gfs2_inum sb_jindex_di; /* journal index inode */
- struct gfs2_inum sb_rindex_di; /* resource group index inode */
- struct gfs2_inum sb_root_di; /* root directory inode */
-
- /* Default inter-node locking protocol (lock module) and namespace */
- char sb_lockproto[GFS2_LOCKNAME_LEN]; /* lock protocol name */
- char sb_locktable[GFS2_LOCKNAME_LEN]; /* unique name for this FS */
-
- /* More special inodes */
- struct gfs2_inum sb_quota_di; /* quota inode */
- struct gfs2_inum sb_license_di; /* license inode */
-
- char sb_reserved[96];
-};
-
struct inode_dir_block {
osi_list_t list;
uint64_t di_addr;
@@ -146,7 +95,7 @@ struct gfs2_options {
unsigned int query:1;
};
-struct gfs1_sb raw_gfs1_ondisk_sb;
+struct gfs_sb raw_gfs1_ondisk_sb;
struct gfs2_sbd sb2;
char device[256];
struct inode_block dirs_to_fix; /* linked list of directories to fix */
@@ -156,7 +105,7 @@ struct timeval tv;
uint64_t dirs_fixed;
uint64_t cdpns_fixed;
uint64_t dirents_fixed;
-struct gfs1_jindex *sd_jindex = NULL; /* gfs1 journal index in memory */
+struct gfs_jindex *sd_jindex = NULL; /* gfs1 journal index in memory */
int gfs2_inptrs;
uint64_t gfs2_heightsize[GFS2_MAX_META_HEIGHT];
uint64_t gfs2_jheightsize[GFS2_MAX_META_HEIGHT];
@@ -214,7 +163,7 @@ static int convert_rgs(struct gfs2_sbd *sbp)
{
struct rgrp_tree *rgd;
struct osi_node *n, *next = NULL;
- struct gfs1_rgrp *rgd1;
+ struct gfs_rgrp *rgd1;
int rgs = 0;
/* --------------------------------- */
@@ -224,7 +173,7 @@ static int convert_rgs(struct gfs2_sbd *sbp)
next = osi_next(n);
rgd = (struct rgrp_tree *)n;
- rgd1 = (struct gfs1_rgrp *)&rgd->rg; /* recast as gfs1 structure */
+ rgd1 = (struct gfs_rgrp *)&rgd->rg; /* recast as gfs1 structure */
/* rg_freemeta is a gfs1 structure, so libgfs2 doesn't know to */
/* convert from be to cpu. We must do it now. */
rgd->rg.rg_free = rgd1->rg_free + be32_to_cpu(rgd1->rg_freemeta);
@@ -1481,9 +1430,9 @@ static int fix_cdpn_symlinks(struct gfs2_sbd *sbp, osi_list_t *cdpn_to_fix)
/* ------------------------------------------------------------------------- */
/* Fetch gfs1 jindex structure from buffer */
/* ------------------------------------------------------------------------- */
-static void gfs1_jindex_in(struct gfs1_jindex *jindex, char *buf)
+static void gfs1_jindex_in(struct gfs_jindex *jindex, char *buf)
{
- struct gfs1_jindex *str = (struct gfs1_jindex *)buf;
+ struct gfs_jindex *str = (struct gfs_jindex *)buf;
jindex->ji_addr = be64_to_cpu(str->ji_addr);
jindex->ji_nsegment = be32_to_cpu(str->ji_nsegment);
@@ -1497,18 +1446,18 @@ static void gfs1_jindex_in(struct gfs1_jindex *jindex, char *buf)
static int read_gfs1_jiindex(struct gfs2_sbd *sdp)
{
struct gfs2_inode *ip = sdp->md.jiinode;
- char buf[sizeof(struct gfs1_jindex)];
+ char buf[sizeof(struct gfs_jindex)];
unsigned int j;
int error=0;
unsigned int tmp_mode = 0;
- if(ip->i_di.di_size % sizeof(struct gfs1_jindex) != 0){
+ if(ip->i_di.di_size % sizeof(struct gfs_jindex) != 0){
log_crit(_("The size reported in the journal index"
" inode is not a\n"
"\tmultiple of the size of a journal index.\n"));
return -1;
}
- if(!(sd_jindex = (struct gfs1_jindex *)malloc(ip->i_di.di_size))) {
+ if(!(sd_jindex = (struct gfs_jindex *)malloc(ip->i_di.di_size))) {
log_crit(_("Unable to allocate journal index\n"));
return -1;
}
@@ -1525,13 +1474,13 @@ static int read_gfs1_jiindex(struct gfs2_sbd *sdp)
ip->i_di.di_mode &= ~S_IFMT;
ip->i_di.di_mode |= S_IFDIR;
for (j = 0; ; j++) {
- struct gfs1_jindex *journ;
+ struct gfs_jindex *journ;
- error = gfs2_readi(ip, buf, j * sizeof(struct gfs1_jindex),
- sizeof(struct gfs1_jindex));
+ error = gfs2_readi(ip, buf, j * sizeof(struct gfs_jindex),
+ sizeof(struct gfs_jindex));
if(!error)
break;
- if (error != sizeof(struct gfs1_jindex)){
+ if (error != sizeof(struct gfs_jindex)){
log_crit(_("An error occurred while reading the"
" journal index file.\n"));
goto fail;
@@ -1541,7 +1490,7 @@ static int read_gfs1_jiindex(struct gfs2_sbd *sdp)
sdp->jsize = (journ->ji_nsegment * 16 * sdp->bsize) >> 20;
}
ip->i_di.di_mode = tmp_mode;
- if(j * sizeof(struct gfs1_jindex) != ip->i_di.di_size){
+ if(j * sizeof(struct gfs_jindex) != ip->i_di.di_size){
log_crit(_("journal inode size invalid\n"));
goto fail;
}
@@ -1596,8 +1545,8 @@ static int init(struct gfs2_sbd *sbp)
}
bh = bread(sbp, GFS2_SB_ADDR >> sbp->sd_fsb2bb_shift);
- memcpy(&raw_gfs1_ondisk_sb, (struct gfs1_sb *)bh->b_data,
- sizeof(struct gfs1_sb));
+ memcpy(&raw_gfs1_ondisk_sb, (struct gfs_sb *)bh->b_data,
+ sizeof(struct gfs_sb));
gfs2_sb_in(&sbp->sd_sb, bh);
jindex_addr = be64_to_cpu(raw_gfs1_ondisk_sb.sb_jindex_di.no_addr);
@@ -1824,7 +1773,7 @@ static int journ_space_to_rg(struct gfs2_sbd *sdp)
{
int error = 0;
int j, x;
- struct gfs1_jindex *jndx;
+ struct gfs_jindex *jndx;
struct rgrp_tree *rgd, *rgdhigh;
struct osi_node *n, *next = NULL;
struct gfs2_meta_header mh;
diff --git a/gfs2/edit/gfs2hex.c b/gfs2/edit/gfs2hex.c
index cc0ceb6..8544bbd 100644
--- a/gfs2/edit/gfs2hex.c
+++ b/gfs2/edit/gfs2hex.c
@@ -88,25 +88,6 @@ const char *block_type_str[15] = {
"Quota Change",
};
-struct gfs1_rgrp {
- struct gfs2_meta_header rg_header;
-
- uint32_t rg_flags; /* ?? */
-
- uint32_t rg_free; /* Number (qty) of free data blocks */
-
- /* Dinodes are USEDMETA, but are handled separately from other METAs */
- uint32_t rg_useddi; /* Number (qty) of dinodes (used or free) */
- uint32_t rg_freedi; /* Number (qty) of unused (free) dinodes */
- struct gfs2_inum rg_freedi_list; /* 1st block in chain of free dinodes */
-
- /* These META statistics do not include dinodes (used or free) */
- uint32_t rg_usedmeta; /* Number (qty) of used metadata blocks */
- uint32_t rg_freemeta; /* Number (qty) of unused metadata blocks */
-
- char rg_reserved[64];
-};
-
void eol(int col) /* end of line */
{
if (termlines) {
@@ -448,9 +429,9 @@ static void gfs2_sb_print2(struct gfs2_sb *sbp2)
/**
* gfs1_rgrp_in - read in a gfs1 rgrp
*/
-static void gfs1_rgrp_in(struct gfs1_rgrp *rgrp, struct gfs2_buffer_head *rbh)
+static void gfs1_rgrp_in(struct gfs_rgrp *rgrp, struct gfs2_buffer_head *rbh)
{
- struct gfs1_rgrp *str = (struct gfs1_rgrp *)rbh->b_data;
+ struct gfs_rgrp *str = (struct gfs_rgrp *)rbh->b_data;
gfs2_meta_header_in(&rgrp->rg_header, rbh);
rgrp->rg_flags = be32_to_cpu(str->rg_flags);
@@ -466,7 +447,7 @@ static void gfs1_rgrp_in(struct gfs1_rgrp *rgrp, struct gfs2_buffer_head *rbh)
/**
* gfs_rgrp_print - Print out a resource group header
*/
-static void gfs1_rgrp_print(struct gfs1_rgrp *rg)
+static void gfs1_rgrp_print(struct gfs_rgrp *rg)
{
gfs2_meta_header_print(&rg->rg_header);
pv(rg, rg_flags, "%u", "0x%x");
@@ -512,7 +493,7 @@ int display_gfs2(void)
case GFS2_METATYPE_RG:
if (sbd.gfs1) {
- struct gfs1_rgrp rg1;
+ struct gfs_rgrp rg1;
gfs1_rgrp_in(&rg1, bh);
gfs1_rgrp_print(&rg1);
10 years, 3 months
gfs2-utils: master - gfs2_edit: Convert fssize to bytes before reporting fs size
by Andrew Price
Gitweb: http://git.fedorahosted.org/git/?p=gfs2-utils.git;a=commitdiff;h=45b761f6...
Commit: 45b761f6106cb11b024dd362da15343b7e612a80
Parent: 0e7038812bb5d12cbe32504f8bba94decf9e75b9
Author: Andrew Price <anprice(a)redhat.com>
AuthorDate: Fri Jan 31 06:30:00 2014 -0600
Committer: Andrew Price <anprice(a)redhat.com>
CommitterDate: Fri Jan 31 06:30:00 2014 -0600
gfs2_edit: Convert fssize to bytes before reporting fs size
gfs2_edit savemeta wasn't converting sbd.fssize to bytes before converting it
to a human-friendly number. This patch adds that multiplier along with a sanity
test for savemeta/restoremeta.
Signed-off-by: Andrew Price <anprice(a)redhat.com>
---
gfs2/edit/savemeta.c | 2 +-
tests/Makefile.am | 1 +
tests/edit.at | 15 +++++++++++++++
tests/testsuite.at | 1 +
4 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index 986fdbe..b4c85d6 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -736,7 +736,7 @@ void savemeta(char *out_fn, int saveoption, int gziplevel)
gfs1_ri_update(&sbd, 0, &rgcount, 0);
else
ri_update(&sbd, 0, &rgcount, &sane);
- printf("Done. File system size: %s\n\n", anthropomorphize(sbd.fssize));
+ printf("Done. File system size: %s\n\n", anthropomorphize(sbd.fssize * sbd.bsize));
fflush(stdout);
get_journal_inode_blocks();
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 616a44e..5f02d3a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -41,6 +41,7 @@ TESTSUITE_AT = \
testsuite.at \
mkfs.at \
fsck.at \
+ edit.at \
libgfs2.at
TESTSUITE = $(srcdir)/testsuite
diff --git a/tests/edit.at b/tests/edit.at
new file mode 100644
index 0000000..014d118
--- /dev/null
+++ b/tests/edit.at
@@ -0,0 +1,15 @@
+AT_TESTED([gfs2_edit])
+AT_BANNER([gfs2_edit tests])
+
+AT_SETUP([Savemeta/restoremeta, defaults])
+GFS_TGT_REGEN
+AT_CHECK([$GFS_MKFS -p lock_nolock $GFS_TGT $(($(gfs_max_blocks 4096)/2))], 0, [ignore], [ignore])
+AT_CHECK([gfs2_edit savemeta $GFS_TGT test.meta > savemeta.log], 0, [ignore], [ignore])
+AT_CHECK([head -2 savemeta.log], 0, [There are 2621440 blocks of 4096 bytes in the destination device.
+Reading resource groups...Done. File system size: 4.1023G
+], [ignore])
+GFS_TGT_REGEN
+AT_CHECK([gfs2_edit restoremeta test.meta $GFS_TGT], 0, [ignore], [ignore])
+AT_CHECK([fsck.gfs2 -n $GFS_TGT], 0, [ignore], [ignore])
+
+AT_CLEANUP
diff --git a/tests/testsuite.at b/tests/testsuite.at
index fc90879..fe781a7 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -22,4 +22,5 @@ AT_COLOR_TESTS
m4_include([mkfs.at])
m4_include([fsck.at])
+m4_include([edit.at])
m4_include([libgfs2.at])
10 years, 3 months