cifs_sb->rsize = volume_info.rsize;
                else
                        cifs_sb->rsize = srvTcp->maxBuf - MAX_CIFS_HDR_SIZE; /* default */
-               if((volume_info.wsize) && (volume_info.wsize <= CIFSMaxBufSize))
+               if(volume_info.wsize)
                        cifs_sb->wsize = volume_info.wsize;
                else
                        cifs_sb->wsize = CIFSMaxBufSize; /* default */
 
                                /* if it fails, try another handle - might be */
                                /* dangerous to hold up writepages with retry */
                                if(rc) {
+                                       cFYI(1,("failed on reopen file in wp"));
                                        read_lock(&GlobalSMBSeslock);
                                        continue;
                                }
        if (cifs_sb->wsize < PAGE_CACHE_SIZE)
                return generic_writepages(mapping, wbc);
 
+       /* BB FIXME we do not have code to sign across multiple buffers yet,
+          so go to older writepage style write which we can sign if needed */
+       if((cifs_sb->tcon->ses) && (cifs_sb->tcon->ses->server))
+               if(cifs_sb->tcon->ses->server->secMode &
+                          (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
+                       return generic_writepages(mapping, wbc);
+
        /*
         * BB: Is this meaningful for a non-block-device file system?
         * If it is, we should test it again after we do I/O
 
                return -ENOMEM;
        }
 
-       if (in_buf->smb_buf_length > CIFSMaxBufSize + MAX_CIFS_HDR_SIZE - 4) {
-               up(&ses->server->tcpSem);
-               cERROR(1,
-                      ("Illegal length, greater than maximum frame, %d ",
-                       in_buf->smb_buf_length));
-               DeleteMidQEntry(midQ);
-               /* If not lock req, update # of requests on wire to server */
-               if(long_op < 3) {
-                       atomic_dec(&ses->server->inFlight); 
-                       wake_up(&ses->server->request_q);
-               }
-               return -EIO;
-       }
-
 /* BB FIXME */
-/*     rc = cifs_sign_smb2(in_buf, data, ses->server, &midQ->sequence_number); */
+/*     rc = cifs_sign_smb2(iov, n_vec, ses->server, &midQ->sequence_number); */
 
        midQ->midState = MID_REQUEST_SUBMITTED;
        rc = smb_send2(ses->server->ssocket, iov, n_vec,