[Ocfs2-tools-devel] [PATCH 2/3] fsck.ocfs2: Add the '-p' and '-a' options.
Sunil Mushran
sunil.mushran at oracle.com
Mon Jun 7 15:00:08 PDT 2010
Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
On 06/07/2010 02:48 PM, Joel Becker wrote:
> ocfs2 filesystems in /etc/fstab often halt the boot process because
> fsck.ocfs2 doesn't understand the '-a' (automatic repair) option. This
> is annoying to have to escape from every reboot.
>
> We copy the extN scheme. The '-p' ("preen") option means: "fix whatever
> can be corrected safely without asking any questions." Right now, that
> just means journal replay for ocfs2. ost->ost_answer will have to get a
> smarter mode for us to differentiate between automatic and interactive
> repairs.
>
> The '-a' option is just an alias for '-p'.
>
> Signed-off-by: Joel Becker<joel.becker at oracle.com>
> ---
> fsck.ocfs2/fsck.c | 22 ++++++++++++++++++----
> fsck.ocfs2/fsck.ocfs2.8.in | 18 +++++++++++++++++-
> 2 files changed, 35 insertions(+), 5 deletions(-)
>
> diff --git a/fsck.ocfs2/fsck.c b/fsck.ocfs2/fsck.c
> index 1941fd4..a3c14b5 100644
> --- a/fsck.ocfs2/fsck.c
> +++ b/fsck.ocfs2/fsck.c
> @@ -118,12 +118,13 @@ static void block_signals(int how)
> static void print_usage(void)
> {
> fprintf(stderr,
> - "Usage: fsck.ocfs2 [ -fGnuvVy ] [ -b superblock block ]\n"
> + "Usage: fsck.ocfs2 {-y|-n|-p} [ -fGnuvVy ] [ -b superblock block ]\n"
> " [ -B block size ] [-r num] device\n"
> "\n"
> "Critical flags for emergency repair:\n"
> " -n Check but don't change the file system\n"
> " -y Answer 'yes' to all repair questions\n"
> + " -p Automatic repair (no questions, only safe repairs)\n"
> " -f Force checking even if file system is clean\n"
> " -F Ignore cluster locking (dangerous!)\n"
> " -r restore backup superblock(dangerous!)\n"
> @@ -654,7 +655,7 @@ int main(int argc, char **argv)
> setlinebuf(stderr);
> setlinebuf(stdout);
>
> - while((c = getopt(argc, argv, "b:B:DfFGnuvVyr:")) != EOF) {
> + while((c = getopt(argc, argv, "b:B:DfFGnupavVyr:")) != EOF) {
> switch (c) {
> case 'b':
> blkno = read_number(optarg);
> @@ -696,10 +697,23 @@ int main(int argc, char **argv)
> break;
>
> case 'n':
> - ost->ost_ask = 0;
> - ost->ost_answer = 0;
> open_flags&= ~OCFS2_FLAG_RW;
> open_flags |= OCFS2_FLAG_RO;
> + /* Fall through */
> +
> + case 'a':
> + case 'p':
> + /*
> + * Like extN, -a maps to -p, which is
> + * 'preen'. This means only fix things
> + * that don't require human interaction.
> + * Unlike extN, this is only journal
> + * replay for now. To make it smarter,
> + * ost->ost_answer needs to learn a
> + * new mode.
> + */
> + ost->ost_ask = 0;
> + ost->ost_answer = 0;
> break;
>
> case 'y':
> diff --git a/fsck.ocfs2/fsck.ocfs2.8.in b/fsck.ocfs2/fsck.ocfs2.8.in
> index 4018de0..7d295c8 100644
> --- a/fsck.ocfs2/fsck.ocfs2.8.in
> +++ b/fsck.ocfs2/fsck.ocfs2.8.in
> @@ -2,7 +2,7 @@
> .SH "NAME"
> fsck.ocfs2 \- Check an \fIOCFS2\fR file system.
> .SH "SYNOPSIS"
> -\fBfsck.ocfs2\fR [ \fB\-fFGnuvVy\fR ] [ \fB\-b\fR \fIsuperblock block\fR ] [ \fB\-B\fR \fIblock size\fR ] \fIdevice\fR
> +\fBfsck.ocfs2\fR [ \fB\-pafFGnuvVy\fR ] [ \fB\-b\fR \fIsuperblock block\fR ] [ \fB\-B\fR \fIblock size\fR ] \fIdevice\fR
> .SH "DESCRIPTION"
> .PP
> \fBfsck.ocfs2\fR is used to check an OCFS2 file system.
> @@ -12,6 +12,12 @@ It will almost always be a device file but a regular file will work as well.
>
> .SH "OPTIONS"
> .TP
> +\fB\-a\fR
> +This option does the same thing as the \fB-p\fR option. It is provided for
> +backwards compatibility only: it is suggested that people use the \fB-p\fR
> +option whenever possible.
> +
> +.TP
> \fB\-b\fR \fIsuperblock block\fR
> Normally, \fBfsck.ocfs2\fR will read the superblock from the first block of
> the device. This option specifies an alternate block that the superblock
> @@ -56,6 +62,16 @@ read-only. The output of \fBfsck.ocfs2\fR with this option can be redirected
> to produce a record of a file system's faults.
>
> .TP
> +\fB\-p\fR
> +Automatically repair ("preen") the file system. This option will cause
> +\fBfsck.ocfs2\fR to automatically fix any problem that can be safely
> +corrected without human intervention. If there are problems that require
> +intervention, the descriptions will be printed and fsck.ocfs2 will exit
> +with the value 4 logically or'd into the exit code. (See the
> +\fBEXIT CODE\fR section.) This option is normally used by the system's
> +boot scripts.
> +
> +.TP
> \fB\-r\fR \fIbackup-number\fR
> \fImkfs.ocfs2\fR makes upto 6 backup copies of the superblock at offsets
> 1G, 4G, 16G, 64G, 256G and 1T depending on the size of the volume.
>
More information about the Ocfs2-tools-devel
mailing list