zfs_replay.c revision 72fc53bc90bd3b199d29d03ee68adb4a5a17d35b
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#include <sys/sysmacros.h>
#include <sys/zfs_znode.h>
#include <sys/byteorder.h>
/*
* Functions to replay ZFS intent log (ZIL) records
* The functions are called through a function vector (zfs_replay_vector)
* which is indexed by the transaction type.
*/
static void
{
}
/* ARGSUSED */
static int
{
return (ENOTSUP);
}
static int
{
char *link; /* symlink content follows name */
int error;
if (byteswap)
return (error);
/*
* All forms of zfs create (create, mkdir, mkxattrdir, symlink)
* eventually end up in zfs_mknode(), which assigns the object's
* creation time and generation number. The generic VOP_CREATE()
* doesn't have either concept, so we smuggle the values inside
* the vattr's otherwise unused va_ctime and va_nblocks fields.
*/
case TX_CREATE:
break;
case TX_MKDIR:
break;
case TX_MKXATTR:
break;
case TX_SYMLINK:
break;
default:
}
return (error);
}
static int
{
int error;
if (byteswap)
return (error);
case TX_REMOVE:
break;
case TX_RMDIR:
break;
default:
}
return (error);
}
static int
{
int error;
if (byteswap)
return (error);
return (error);
}
return (error);
}
static int
{
int error;
if (byteswap)
return (error);
return (error);
}
return (error);
}
static int
{
int error;
if (byteswap)
return (error);
return (error);
}
static int
{
int error;
if (byteswap)
return (error);
return (error);
}
static int
{
int error;
if (byteswap)
return (error);
return (error);
}
static int
{
int error;
if (byteswap) {
}
return (error);
return (error);
}
/*
* Callback vectors for replaying records
*/
zfs_replay_error, /* 0 no such transaction type */
zfs_replay_create, /* TX_CREATE */
zfs_replay_create, /* TX_MKDIR */
zfs_replay_create, /* TX_MKXATTR */
zfs_replay_create, /* TX_SYMLINK */
zfs_replay_remove, /* TX_REMOVE */
zfs_replay_remove, /* TX_RMDIR */
zfs_replay_link, /* TX_LINK */
zfs_replay_rename, /* TX_RENAME */
zfs_replay_write, /* TX_WRITE */
zfs_replay_truncate, /* TX_TRUNCATE */
zfs_replay_setattr, /* TX_SETATTR */
zfs_replay_acl, /* TX_ACL */
};