]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/nfs/direct.c
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux.git] / fs / nfs / direct.c
index 040a50fd9bf307d9e2bdd25643a3db9f73dcb64e..b768a0b42e82e857d251dadca061e25811c38c84 100644 (file)
@@ -245,10 +245,10 @@ static int nfs_direct_cmp_commit_data_verf(struct nfs_direct_req *dreq,
                                         data->ds_commit_index);
 
        /* verifier not set so always fail */
-       if (verfp->committed < 0)
+       if (verfp->committed < 0 || data->res.verf->committed <= NFS_UNSTABLE)
                return 1;
 
-       return nfs_direct_cmp_verf(verfp, &data->verf);
+       return nfs_direct_cmp_verf(verfp, data->res.verf);
 }
 
 /**
@@ -824,7 +824,8 @@ static void nfs_direct_write_reschedule_io(struct nfs_pgio_header *hdr)
                dreq->flags = NFS_ODIRECT_RESCHED_WRITES;
                /* fake unstable write to let common nfs resend pages */
                hdr->verf.committed = NFS_UNSTABLE;
-               hdr->good_bytes = hdr->args.count;
+               hdr->good_bytes = hdr->args.offset + hdr->args.count -
+                       hdr->io_start;
        }
        spin_unlock(&dreq->lock);
 }