pnfs: fix for short write on ds error

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
Casey Bodley 2011-10-18 12:01:50 -07:00 committed by unknown
parent 03e810ce83
commit 1f7e560a9a

View file

@ -271,16 +271,13 @@ static int handle_write(nfs41_upcall *upcall)
{ {
readwrite_upcall_args *args = &upcall->args.rw; readwrite_upcall_args *args = &upcall->args.rw;
stateid_arg stateid; stateid_arg stateid;
ULONG pnfs_bytes_written = 0; uint32_t pnfs_bytes_written = 0;
int status; int status;
nfs41_open_stateid_arg(upcall->state_ref, &stateid); nfs41_open_stateid_arg(upcall->state_ref, &stateid);
#ifdef PNFS_ENABLE_WRITE #ifdef PNFS_ENABLE_WRITE
status = write_to_pnfs(upcall, &stateid); status = write_to_pnfs(upcall, &stateid);
if (status == NO_ERROR)
goto out;
if (args->out_len) { if (args->out_len) {
pnfs_bytes_written = args->out_len; pnfs_bytes_written = args->out_len;
args->out_len = 0; args->out_len = 0;
@ -288,6 +285,9 @@ static int handle_write(nfs41_upcall *upcall)
args->offset += pnfs_bytes_written; args->offset += pnfs_bytes_written;
args->buffer += pnfs_bytes_written; args->buffer += pnfs_bytes_written;
args->len -= pnfs_bytes_written; args->len -= pnfs_bytes_written;
if (args->len == 0)
goto out;
} }
#endif #endif