tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: FSCK_EXIT_ROOT_CHANGED



2008/3/22, Juan RP <xtraeme%gmail.com@localhost>:
> Hi,
>
> with a -current userland/kernel every time that fsck_ffs checks
> the root filesystem it returns FSCK_EXIT_ROOT_CHANGED, and
> /etc/rc.d/fsck checks the exit code and executes a reboot(2) call.
>
> That's because the mount(2) call is returning -1 (fsck_ffs/main.c):
>
>        if (hotroot()) {
>                struct statvfs stfs_buf;
>                /*
>                 * We modified the root.  Do a mount update on
>                 * it, unless it is read-write, so we can continue.
>                 */
>                if (statvfs("/", &stfs_buf) == 0) {
>                        long flags = stfs_buf.f_flag;
>                        struct ufs_args args;
>
>                        if (flags & MNT_RDONLY) {
>                                args.fspec = 0;
>                                flags |= MNT_UPDATE | MNT_RELOAD;
>                                if (mount(MOUNT_FFS, "/", flags,
>                                    &args, sizeof args) == 0)
>                                        return FSCK_EXIT_OK;
>                        }
>                }
>                if (!preen)
>                        pwarn("\n***** REBOOT NOW *****\n");
>                sync();
>                return FSCK_EXIT_ROOT_CHANGED;
>        }
>
> Dunno why mount returns -1, but this is causing an extra reboot
> every time the root filesystem is fsck'ed... any idea where's
> the problem?

Forgot to check errno for mount, it's returning EINVAL.

-- 
Juan Romero Pardines
xtraeme at gmail|netbsd dot org
The NetBSD Project


Home | Main Index | Thread Index | Old Index