[Ocfs2-tools-devel] [PATCH 3/6] libo2dlm: Detect invalid LVBs

Joel Becker joel.becker at oracle.com
Wed Feb 10 01:34:23 PST 2010


When a DLM does recovery, it may have to invalidate the contents of an
LVB or two.  The DLMs provide a method to detect this.  dlmfs has
learned to report this via a zero-length read(2).  libo2dlm now notices
the zero length and returns an error to the caller.

Signed-off-by: Joel Becker <joel.becker at oracle.com>
---
 libo2dlm/o2dlm.c      |    2 ++
 libo2dlm/o2dlm_err.et |    3 +++
 2 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/libo2dlm/o2dlm.c b/libo2dlm/o2dlm.c
index bf708e7..ee7f34c 100644
--- a/libo2dlm/o2dlm.c
+++ b/libo2dlm/o2dlm.c
@@ -564,6 +564,8 @@ static errcode_t o2dlm_read_lvb_classic(struct o2dlm_ctxt *ctxt,
 	ret = read(fd, lvb, len);
 	if (ret < 0)
 		return O2DLM_ET_LVB_READ;
+	if (!ret)
+		return O2DLM_ET_LVB_INVALID;
 
 	if (bytes_read)
 		*bytes_read = ret;
diff --git a/libo2dlm/o2dlm_err.et b/libo2dlm/o2dlm_err.et
index 184e295..9b757c8 100644
--- a/libo2dlm/o2dlm_err.et
+++ b/libo2dlm/o2dlm_err.et
@@ -114,4 +114,7 @@ ec	O2DLM_ET_DOMAIN_BUSY,
 ec	O2DLM_ET_BAST_UNSUPPORTED,
 	"This environment does not support BASTs"
 
+ec	O2DLM_ET_LVB_INVALID,
+	"The LVB is not valid"
+
 	end
-- 
1.6.6.1




More information about the Ocfs2-tools-devel mailing list