write.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff -u --recursive --new-file --show-c-function linux-2.6.1-rc1/fs/nfs/write.c linux-2.6.1-01-fix_commit/fs/nfs/write.c --- linux-2.6.1-rc1/fs/nfs/write.c 2004-01-01 21:22:12.000000000 -0500 +++ linux-2.6.1-01-fix_commit/fs/nfs/write.c 2004-01-03 12:27:06.000000000 -0500 @@ -1074,9 +1074,12 @@ int nfs_commit_file(struct inode *inode, spin_lock(&nfs_wreq_lock); res = nfs_scan_commit(inode, &head, file, idx_start, npages); - spin_unlock(&nfs_wreq_lock); - if (res) + if (res) { + res += nfs_scan_commit(inode, &head, NULL, 0, 0); + spin_unlock(&nfs_wreq_lock); error = nfs_commit_list(&head, how); + } else + spin_unlock(&nfs_wreq_lock); if (error < 0) return error; return res;