Deleted Added
sdiff udiff text old ( 199157 ) new ( 209962 )
full compact
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE

--- 264 unchanged lines hidden (view full) ---

273 vsecattr_t vsec = { 0 };
274 lr_attr_t *lrattr;
275 void *aclstart;
276 void *fuidstart;
277 size_t xvatlen = 0;
278 uint64_t txtype;
279 int error;
280
281 if (byteswap) {
282 byteswap_uint64_array(lracl, sizeof (*lracl));
283 txtype = (int)lr->lr_common.lrc_txtype;
284 if (txtype == TX_CREATE_ACL_ATTR ||
285 txtype == TX_MKDIR_ACL_ATTR) {
286 lrattr = (lr_attr_t *)(caddr_t)(lracl + 1);
287 zfs_replay_swap_attrs(lrattr);
288 xvatlen = ZIL_XVAT_SIZE(lrattr->lr_attr_masksize);
289 }
290
291 aclstart = (caddr_t)(lracl + 1) + xvatlen;

--- 24 unchanged lines hidden (view full) ---

316 xva.xva_vattr.va_nblocks = lr->lr_gen;
317
318 error = dmu_object_info(zfsvfs->z_os, lr->lr_foid, NULL);
319 if (error != ENOENT)
320 goto bail;
321
322 if (lr->lr_common.lrc_txtype & TX_CI)
323 vflg |= FIGNORECASE;
324 switch ((int)lr->lr_common.lrc_txtype) {
325 case TX_CREATE_ACL:
326 aclstart = (caddr_t)(lracl + 1);
327 fuidstart = (caddr_t)aclstart +
328 ZIL_ACE_LENGTH(lracl->lr_acl_bytes);
329 zfsvfs->z_fuid_replay = zfs_replay_fuids(fuidstart,
330 (void *)&name, lracl->lr_fuidcnt, lracl->lr_domcnt,
331 lr->lr_uid, lr->lr_gid);
332 /*FALLTHROUGH*/

--- 64 unchanged lines hidden (view full) ---

397 }
398
399bail:
400 if (error == 0 && vp != NULL)
401 VN_RELE(vp);
402
403 VN_RELE(ZTOV(dzp));
404
405 zfs_fuid_info_free(zfsvfs->z_fuid_replay);
406 zfsvfs->z_fuid_replay = NULL;
407
408 return (error);
409}
410
411static int
412zfs_replay_create(zfsvfs_t *zfsvfs, lr_create_t *lr, boolean_t byteswap)
413{

--- 6 unchanged lines hidden (view full) ---

420 size_t lrsize = sizeof (lr_create_t);
421 lr_attr_t *lrattr;
422 void *start;
423 size_t xvatlen;
424 uint64_t txtype;
425 struct componentname cn;
426 int error;
427
428 if (byteswap) {
429 byteswap_uint64_array(lr, sizeof (*lr));
430 txtype = (int)lr->lr_common.lrc_txtype;
431 if (txtype == TX_CREATE_ATTR || txtype == TX_MKDIR_ATTR)
432 zfs_replay_swap_attrs((lr_attr_t *)(lr + 1));
433 }
434
435
436 if ((error = zfs_zget(zfsvfs, lr->lr_doid, &dzp)) != 0)
437 return (error);
438

--- 33 unchanged lines hidden (view full) ---

472 lr->lr_uid, lr->lr_gid);
473 }
474
475 cn.cn_cred = kcred;
476 cn.cn_thread = curthread;
477 cn.cn_flags = SAVENAME;
478
479 vn_lock(ZTOV(dzp), LK_EXCLUSIVE | LK_RETRY);
480 switch ((int)lr->lr_common.lrc_txtype) {
481 case TX_CREATE_ATTR:
482 lrattr = (lr_attr_t *)(caddr_t)(lr + 1);
483 xvatlen = ZIL_XVAT_SIZE(lrattr->lr_attr_masksize);
484 zfs_replay_xvattr((lr_attr_t *)((caddr_t)lr + lrsize), &xva);
485 start = (caddr_t)(lr + 1) + xvatlen;
486 zfsvfs->z_fuid_replay =
487 zfs_replay_fuid_domain(start, &start,
488 lr->lr_uid, lr->lr_gid);

--- 215 unchanged lines hidden (view full) ---

704
705static int
706zfs_replay_write(zfsvfs_t *zfsvfs, lr_write_t *lr, boolean_t byteswap)
707{
708 char *data = (char *)(lr + 1); /* data follows lr_write_t */
709 znode_t *zp;
710 int error;
711 ssize_t resid;
712
713 if (byteswap)
714 byteswap_uint64_array(lr, sizeof (*lr));
715
716 if ((error = zfs_zget(zfsvfs, lr->lr_foid, &zp)) != 0) {
717 /*
718 * As we can log writes out of order, it's possible the
719 * file has been removed. In this case just drop the write
720 * and return success.
721 */
722 if (error == ENOENT)
723 error = 0;
724 return (error);
725 }
726
727 error = vn_rdwr(UIO_WRITE, ZTOV(zp), data, lr->lr_length,
728 lr->lr_offset, UIO_SYSSPACE, 0, RLIM64_INFINITY, kcred, &resid);
729
730 VN_RELE(ZTOV(zp));
731
732 return (error);
733}
734
735static int
736zfs_replay_truncate(zfsvfs_t *zfsvfs, lr_truncate_t *lr, boolean_t byteswap)
737{
738
739 ZFS_LOG(0, "Unexpected code path, report to pjd@FreeBSD.org");
740 return (EOPNOTSUPP);
741}
742
743static int

--- 195 unchanged lines hidden (view full) ---

939 zfs_replay_acl_v0, /* TX_ACL_V0 */
940 zfs_replay_acl, /* TX_ACL */
941 zfs_replay_create_acl, /* TX_CREATE_ACL */
942 zfs_replay_create, /* TX_CREATE_ATTR */
943 zfs_replay_create_acl, /* TX_CREATE_ACL_ATTR */
944 zfs_replay_create_acl, /* TX_MKDIR_ACL */
945 zfs_replay_create, /* TX_MKDIR_ATTR */
946 zfs_replay_create_acl, /* TX_MKDIR_ACL_ATTR */
947};