Browse Source

cifs: add pid field to cifs_writedata

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>
Jeff Layton 13 years ago
parent
commit
fe5f5d2e90
3 changed files with 4 additions and 2 deletions
  1. 1 0
      fs/cifs/cifsproto.h
  2. 2 2
      fs/cifs/cifssmb.c
  3. 1 0
      fs/cifs/file.c

+ 1 - 0
fs/cifs/cifsproto.h

@@ -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;

+ 2 - 2
fs/cifs/cifssmb.c

@@ -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;

+ 1 - 0
fs/cifs/file.c

@@ -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);