mm/gup: introduce pin_user_pages*() and FOLL_PIN
[linux-2.6-microblaze.git] / fs / splice.c
index fa1f377..3009652 100644 (file)
@@ -559,7 +559,7 @@ static int splice_from_pipe_next(struct pipe_inode_info *pipe, struct splice_des
                if (!pipe->writers)
                        return 0;
 
-               if (!pipe->waiting_writers && sd->num_spliced)
+               if (sd->num_spliced)
                        return 0;
 
                if (sd->flags & SPLICE_F_NONBLOCK)
@@ -1098,9 +1098,7 @@ static int wait_for_space(struct pipe_inode_info *pipe, unsigned flags)
                        return -EAGAIN;
                if (signal_pending(current))
                        return -ERESTARTSYS;
-               pipe->waiting_writers++;
                pipe_wait(pipe);
-               pipe->waiting_writers--;
        }
 }
 
@@ -1482,11 +1480,9 @@ static int ipipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
                }
                if (!pipe->writers)
                        break;
-               if (!pipe->waiting_writers) {
-                       if (flags & SPLICE_F_NONBLOCK) {
-                               ret = -EAGAIN;
-                               break;
-                       }
+               if (flags & SPLICE_F_NONBLOCK) {
+                       ret = -EAGAIN;
+                       break;
                }
                pipe_wait(pipe);
        }
@@ -1527,9 +1523,7 @@ static int opipe_prep(struct pipe_inode_info *pipe, unsigned int flags)
                        ret = -ERESTARTSYS;
                        break;
                }
-               pipe->waiting_writers++;
                pipe_wait(pipe);
-               pipe->waiting_writers--;
        }
 
        pipe_unlock(pipe);
@@ -1751,13 +1745,6 @@ static int link_pipe(struct pipe_inode_info *ipipe,
                i_tail++;
        } while (len);
 
-       /*
-        * return EAGAIN if we have the potential of some data in the
-        * future, otherwise just return 0
-        */
-       if (!ret && ipipe->waiting_writers && (flags & SPLICE_F_NONBLOCK))
-               ret = -EAGAIN;
-
        pipe_unlock(ipipe);
        pipe_unlock(opipe);