X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fzfs%2Fzfs_replay.c;h=aa6366e11dd2e739718125b26b126f0fad9873c1;hb=d9b0ebbe824469d178a05b0fb9004e4afce86009;hp=782d5582b0c741b9f6727e396a0c280db49c8683;hpb=6742abf9ec5a2c0ca132951efa0dee85698ff9b8;p=zfs.git diff --git a/module/zfs/zfs_replay.c b/module/zfs/zfs_replay.c index 782d558..aa6366e 100644 --- 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) 2012 Cyril Plisko. All rights reserved. */ #include @@ -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; - int error; + int error, written; 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; } - error = zpl_write_common(ZTOI(zp), data, length, offset, + written = zpl_write_common(ZTOI(zp), data, length, offset, 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 */