CIFS: Return error code when getting file handle for writeback
Now we just return NULL cifsFileInfo pointer in cases we didn't find or couldn't reopen a file. This hides errors from cifs_reopen_file() especially retryable errors which should be handled appropriately. Create new cifs_get_writable_file() routine that returns error codes from cifs_reopen_file() and use it in the writeback codepath. Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:

committed by
Steve French

parent
c4b8f657d5
commit
fe768d51c8
@@ -2126,10 +2126,13 @@ cifs_writev_requeue(struct cifs_writedata *wdata)
|
||||
wdata2->tailsz = tailsz;
|
||||
wdata2->bytes = cur_len;
|
||||
|
||||
wdata2->cfile = find_writable_file(CIFS_I(inode), false);
|
||||
rc = cifs_get_writable_file(CIFS_I(inode), false,
|
||||
&wdata2->cfile);
|
||||
if (!wdata2->cfile) {
|
||||
cifs_dbg(VFS, "No writable handle to retry writepages\n");
|
||||
rc = -EBADF;
|
||||
cifs_dbg(VFS, "No writable handle to retry writepages rc=%d\n",
|
||||
rc);
|
||||
if (!is_retryable_error(rc))
|
||||
rc = -EBADF;
|
||||
} else {
|
||||
wdata2->pid = wdata2->cfile->pid;
|
||||
rc = server->ops->async_writev(wdata2,
|
||||
|
Reference in New Issue
Block a user