CIFS: Move unlocking pages from wdata_send_pages()
authorPavel Shilovsky <pshilov@microsoft.com>
Mon, 28 Jan 2019 19:57:00 +0000 (11:57 -0800)
committerSteve French <stfrench@microsoft.com>
Wed, 6 Mar 2019 00:10:04 +0000 (18:10 -0600)
Currently wdata_send_pages() unlocks pages after sending.
This complicates further refactoring and doesn't align
with the function name. Move unlocking to writepages.

Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/file.c

index 4de7af0..1141514 100644 (file)
@@ -2080,8 +2080,7 @@ wdata_send_pages(struct TCP_Server_Info *server, struct cifs_writedata *wdata,
                 unsigned int nr_pages, struct address_space *mapping,
                 struct writeback_control *wbc)
 {
-       int rc = 0;
-       unsigned int i;
+       int rc;
 
        wdata->sync_mode = wbc->sync_mode;
        wdata->nr_pages = nr_pages;
@@ -2094,7 +2093,7 @@ wdata_send_pages(struct TCP_Server_Info *server, struct cifs_writedata *wdata,
 
        rc = adjust_credits(server, &wdata->credits, wdata->bytes);
        if (rc)
-               goto send_pages_out;
+               return rc;
 
        if (!wdata->cfile) {
                cifs_dbg(VFS, "No writable handle in writepages\n");
@@ -2108,10 +2107,6 @@ wdata_send_pages(struct TCP_Server_Info *server, struct cifs_writedata *wdata,
                                                       cifs_writedata_release);
        }
 
-send_pages_out:
-       for (i = 0; i < nr_pages; ++i)
-               unlock_page(wdata->pages[i]);
-
        return rc;
 }
 
@@ -2200,6 +2195,9 @@ retry:
 
                rc = wdata_send_pages(server, wdata, nr_pages, mapping, wbc);
 
+               for (i = 0; i < nr_pages; ++i)
+                       unlock_page(wdata->pages[i]);
+
                /* send failure -- clean up the mess */
                if (rc != 0) {
                        add_credits_and_wake_if(server, &wdata->credits, 0);