git://git.camperquake.de
/
zfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix 'zpool create' segfault due to bad syntax
[zfs.git]
/
module
/
zfs
/
zfs_replay.c
diff --git
a/module/zfs/zfs_replay.c
b/module/zfs/zfs_replay.c
index
a5018ee
..
aa6366e
100644
(file)
--- a/
module/zfs/zfs_replay.c
+++ b/
module/zfs/zfs_replay.c
@@
-20,6
+20,7
@@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012 Cyril Plisko. All rights reserved.
*/
#include <sys/types.h>
*/
#include <sys/types.h>
@@
-303,7
+304,7
@@
zfs_replay_create_acl(zfs_sb_t *zsb, lr_acl_create_t *lracl, boolean_t byteswap)
return (error);
xva_init(&xva);
return (error);
xva_init(&xva);
- zfs_init_vattr(&xva.xva_vattr, AT
_MODE | AT_UID | AT
_GID,
+ zfs_init_vattr(&xva.xva_vattr, AT
TR_MODE | ATTR_UID | ATTR
_GID,
lr->lr_mode, lr->lr_uid, lr->lr_gid, lr->lr_rdev, lr->lr_foid);
/*
lr->lr_mode, lr->lr_uid, lr->lr_gid, lr->lr_rdev, lr->lr_foid);
/*
@@
-430,7
+431,7
@@
zfs_replay_create(zfs_sb_t *zsb, lr_create_t *lr, boolean_t byteswap)
return (error);
xva_init(&xva);
return (error);
xva_init(&xva);
- zfs_init_vattr(&xva.xva_vattr, AT
_MODE | AT_UID | AT
_GID,
+ zfs_init_vattr(&xva.xva_vattr, AT
TR_MODE | ATTR_UID | ATTR
_GID,
lr->lr_mode, lr->lr_uid, lr->lr_gid, lr->lr_rdev, lr->lr_foid);
/*
lr->lr_mode, lr->lr_uid, lr->lr_gid, lr->lr_rdev, lr->lr_foid);
/*
@@
-626,7
+627,7
@@
zfs_replay_write(zfs_sb_t *zsb, lr_write_t *lr, boolean_t byteswap)
{
char *data = (char *)(lr + 1); /* data follows lr_write_t */
znode_t *zp;
{
char *data = (char *)(lr + 1); /* data follows lr_write_t */
znode_t *zp;
- int error;
+ int error
, written
;
uint64_t eod, offset, length;
if (byteswap)
uint64_t eod, offset, length;
if (byteswap)
@@
-671,14
+672,12
@@
zfs_replay_write(zfs_sb_t *zsb, lr_write_t *lr, boolean_t byteswap)
zsb->z_replay_eof = eod;
}
zsb->z_replay_eof = eod;
}
-
error
= zpl_write_common(ZTOI(zp), data, length, offset,
+
written
= zpl_write_common(ZTOI(zp), data, length, offset,
UIO_SYSSPACE, 0, kcred);
UIO_SYSSPACE, 0, kcred);
- if (error) {
- if (error < 0)
- error = -error;
- else
- error = EIO; /* Short write */
- }
+ if (written < 0)
+ error = -written;
+ else if (written < length)
+ error = EIO; /* short write */
iput(ZTOI(zp));
zsb->z_replay_eof = 0; /* safety */
iput(ZTOI(zp));
zsb->z_replay_eof = 0; /* safety */