Gitweb:
http://git.fedorahosted.org/git/?p=gfs2-utils.git;a=commitdiff;h=9ef99edb...
Commit: 9ef99edb80d10cb58ed3b44a3198b6c44544b8b2
Parent: 647bf61ecc78ba5bcfbacdc1ab95488cfe787aeb
Author: Bob Peterson <rpeterso(a)redhat.com>
AuthorDate: Thu Sep 24 08:52:47 2015 -0500
Committer: Bob Peterson <rpeterso(a)redhat.com>
CommitterDate: Tue Sep 29 13:23:38 2015 -0500
fsck.gfs2: Refactor check_eattr_entries and add error messages
This patch adds a couple error messages to document when extended
attributes have errors in function check_eattr_entries. It also
refactors some of the code to make it more readable.
---
gfs2/fsck/pass1.c | 28 +++++++++++++++++-----------
1 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/gfs2/fsck/pass1.c b/gfs2/fsck/pass1.c
index f21886b..f5bf66b 100644
--- a/gfs2/fsck/pass1.c
+++ b/gfs2/fsck/pass1.c
@@ -891,6 +891,8 @@ static int check_eattr_entries(struct gfs2_inode *ip,
{
struct gfs2_sbd *sdp = ip->i_sbd;
char ea_name[256];
+ uint32_t avail_size;
+ int max_ptrs;
if (!ea_hdr->ea_name_len){
/* Skip this entry for now */
@@ -904,22 +906,26 @@ static int check_eattr_entries(struct gfs2_inode *ip,
if (!GFS2_EATYPE_VALID(ea_hdr->ea_type) &&
((ea_hdr_prev) || (!ea_hdr_prev && ea_hdr->ea_type))){
/* Skip invalid entry */
+ log_err(_("EA (%s) type is invalid (%d > %d).\n"),
+ ea_name, ea_hdr->ea_type, GFS2_EATYPE_LAST);
return 1;
}
- if (ea_hdr->ea_num_ptrs){
- uint32_t avail_size;
- int max_ptrs;
+ if (!ea_hdr->ea_num_ptrs)
+ return 0;
- avail_size = sdp->sd_sb.sb_bsize - sizeof(struct gfs2_meta_header);
- max_ptrs = (be32_to_cpu(ea_hdr->ea_data_len)+avail_size-1)/avail_size;
+ avail_size = sdp->sd_sb.sb_bsize - sizeof(struct gfs2_meta_header);
+ max_ptrs = (be32_to_cpu(ea_hdr->ea_data_len)+avail_size-1)/avail_size;
- if (max_ptrs > ea_hdr->ea_num_ptrs) {
- return 1;
- } else {
- log_debug( _(" Pointers Required: %d\n Pointers Reported: %d\n"),
- max_ptrs, ea_hdr->ea_num_ptrs);
- }
+ if (max_ptrs > ea_hdr->ea_num_ptrs) {
+ log_err(_("EA (%s) has incorrect number of pointers.\n"),
+ ea_name);
+ log_err(_(" Required: %d\n Reported: %d\n"),
+ max_ptrs, ea_hdr->ea_num_ptrs);
+ return 1;
+ } else {
+ log_debug( _(" Pointers Required: %d\n Pointers Reported: %d\n"),
+ max_ptrs, ea_hdr->ea_num_ptrs);
}
return 0;
}