cifs: add pid field to cifs_writedata
Jeff Layton [Fri, 23 Mar 2012 18:40:55 +0000 (14:40 -0400)]
We'll need this to handle rwpidforward option correctly when we use
async writes in the aio_write op.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Pavel Shilovsky <piastry@etersoft.ru>

fs/cifs/cifsproto.h
fs/cifs/cifssmb.c
fs/cifs/file.c

index 95ee5a6..9e68340 100644 (file)
@@ -487,6 +487,7 @@ struct cifs_writedata {
        struct work_struct              work;
        struct cifsFileInfo             *cfile;
        __u64                           offset;
+       pid_t                           pid;
        unsigned int                    bytes;
        int                             result;
        unsigned int                    nr_pages;
index 76d8981..6192214 100644 (file)
@@ -2166,8 +2166,8 @@ cifs_async_writev(struct cifs_writedata *wdata)
                goto async_writev_out;
        }
 
-       smb->hdr.Pid = cpu_to_le16((__u16)wdata->cfile->pid);
-       smb->hdr.PidHigh = cpu_to_le16((__u16)(wdata->cfile->pid >> 16));
+       smb->hdr.Pid = cpu_to_le16((__u16)wdata->pid);
+       smb->hdr.PidHigh = cpu_to_le16((__u16)(wdata->pid >> 16));
 
        smb->AndXCommand = 0xFF;        /* none */
        smb->Fid = wdata->cfile->netfid;
index 159fcc5..5fedf6c 100644 (file)
@@ -1802,6 +1802,7 @@ retry:
                                rc = -EBADF;
                                break;
                        }
+                       wdata->pid = wdata->cfile->pid;
                        rc = cifs_async_writev(wdata);
                } while (wbc->sync_mode == WB_SYNC_ALL && rc == -EAGAIN);