[OracleOSS] [TitleIndex] [WordIndex]

OCFS2/DesignDocs/OCFS2VolumeDetect

OCFS2 Volume Detect

Introduction

mounted.ocfs2 is used to detect OCFS2 volume(s) on a system. This tools collect the information and show the OCFS2 volume is active or not.

Problem Description

But the information is gathered using dirty-read by reading //slot_map on each OCFS2 volume, the information may be stale. And this tools may report inconsonant/mistaken results, when the OCFS2 volume is off-line, and the last node did not umount this volume cleanly.

Fix Solution

To fix this problem, the mounted.ocfs2 should check file //heartbeat before read file //slot_map, to determine whether the //slot_map is valid or not.

Add detect code that reads the content of file //heartbeat before reads //slot_map, waits 10 secs, reads it again. Then compare the two readings.

The heartbeat file is maintained by the heartbeat kernel thread, [kthread]. And it is update timely.

Implementation Detail

Find the block number of //heartbeat by ocfs2_lookup() and read the whole file by ocfs2_read_whole_file()


2011-12-23 01:01