SU+J on 9.1-RC2 ISO

Kirk McKusick mckusick at mckusick.com
Wed Dec 5 10:14:30 UTC 2012


> Date: Sun, 04 Nov 2012 21:13:36 +0900 (JST)
> To: freebsd-stable at freebsd.org
> Subject: Re: SU+J on 9.1-RC2 ISO
> From: HATANO Tomomi <hatanou at infolab.ne.jp>
> Cc: jdc at koitsu.org, b.smeelen at ose.nl, fnwhitehorn at freebsd.org,
>         freebsd-current at 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


More information about the freebsd-current mailing list