This reverts commit 
81b0c8713385ce1b1b9058e916edcf9561ad76d6, which was
a bugfix against 
6527c2bdf1f833cc18e8f42bd97973d583e4aa83 ("[PATCH]
generic_file_buffered_write(): deadlock on vectored write"), which we
also revert.
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
                        break;
                }
 
-               if (unlikely(bytes == 0)) {
-                       status = 0;
-                       copied = 0;
-                       goto zero_length_segment;
-               }
-
                status = a_ops->prepare_write(file, page, offset, offset+bytes);
                if (unlikely(status)) {
                        loff_t isize = i_size_read(inode);
                        page_cache_release(page);
                        continue;
                }
-zero_length_segment:
-               if (likely(copied >= 0)) {
+               if (likely(copied > 0)) {
                        if (!status)
                                status = copied;
 
 
        const struct iovec *iov = *iovp;
        size_t base = *basep;
 
-       do {
+       while (bytes) {
                int copy = min(bytes, iov->iov_len - base);
 
                bytes -= copy;
                        iov++;
                        base = 0;
                }
-       } while (bytes);
+       }
        *iovp = iov;
        *basep = base;
 }