Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 05 Dec 2012 02:14:25 -0800
From:      Kirk McKusick <mckusick@mckusick.com>
To:        HATANO Tomomi <hatanou@infolab.ne.jp>
Cc:        jdc@koitsu.org, b.smeelen@ose.nl, fnwhitehorn@freebsd.org, freebsd-current@freebsd.org, Jeff Roberson <jroberson@jroberson.net>
Subject:   Re: SU+J on 9.1-RC2 ISO 
Message-ID:  <201212051014.qB5AEPQP054949@chez.mckusick.com>
In-Reply-To: <20121104.211336.244701604.hatanou@infolab.ne.jp> 

next in thread | previous in thread | raw e-mail | index | archive | help
> Date: Sun, 04 Nov 2012 21:13:36 +0900 (JST)
> To: freebsd-stable@freebsd.org
> Subject: Re: SU+J on 9.1-RC2 ISO
> From: HATANO Tomomi <hatanou@infolab.ne.jp>
> Cc: jdc@koitsu.org, b.smeelen@ose.nl, fnwhitehorn@freebsd.org,
>         freebsd-current@freebsd.org
> 
> Hi all.
> 
> The point is:
> 
>     There is completely no way to take a snapshot of SU+J partition
>     unless modify one's kernel.
> 
> Whether some issue still exist or not,
> how about enabling snapshoting SU+J partition
> through sysctl variable?
> 
> Would you mind to see patch attached?
> 
> 1. Taking a snapshot of SU+J partition is controlled through sysctl variable.
> 
> 2. Default to disable.
>    One who want to enable it should set the variable manually.
> 
> 3. The default value in bsdinstall(8) may be left as is.
> --
> HATANO Tomomi.
> 
> --- src/sys/ufs/ffs/ffs_snapshot.c.orig	2012-11-04 11:01:58.000000000 +0900
> +++ src/sys/ufs/ffs/ffs_snapshot.c	2012-11-04 11:13:32.000000000 +0900
> @@ -182,8 +182,10 @@
>   */
>  int dopersistence = 0;
>  
> -#ifdef DEBUG
>  #include <sys/sysctl.h>
> +int snapsuj = 0;
> +SYSCTL_INT(_debug, OID_AUTO, snapsuj, CTLFLAG_RW, &snapsuj, 0, "");
> +#ifdef DEBUG
>  SYSCTL_INT(_debug, OID_AUTO, dopersistence, CTLFLAG_RW, &dopersistence, 0, "");
>  static int snapdebug = 0;
>  SYSCTL_INT(_debug, OID_AUTO, snapdebug, CTLFLAG_RW, &snapdebug, 0, "");
> @@ -230,7 +232,7 @@
>  	 * At the moment, journaled soft updates cannot support
>  	 * taking snapshots.
>  	 */
> -	if (MOUNTEDSUJ(mp)) {
> +	if (MOUNTEDSUJ(mp) && (snapsuj == 0)) {
>  		vfs_mount_error(mp, "%s: Snapshots are not yet supported when "
>  		    "running with journaled soft updates", fs->fs_fsmnt);
>  		return (EOPNOTSUPP);
> 

Snapshots are disabled when using SU+J for a reason. That reason is
that the journal rollback when a snapshot is active on a filesystem
DOES NOT WORK. It leaves your filesystem with duplicate blocks that can
only be removed by manually running fsck and correcting the duplicate
block entries by hand. If you need to use snapshots, then run with SU
and not SU+J. When journal rollback properly handles snapshots, snapshots
on SU+J will be enabled.

	Kirk McKusick



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212051014.qB5AEPQP054949>