mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 14:41:39 +00:00
[CIFS] Remove unnecessary parm to cifs_reopen_file
Also expand debug entry to show which character on a failed Unicode mapping. Acked-by: Shaggy <shaggy@us.ibm.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
aaf737adb6
commit
3a9f462f6d
@ -74,8 +74,8 @@ cifs_strtoUCS(__le16 * to, const char *from, int len,
|
||||
charlen = codepage->char2uni(from, len, &wchar_to[i]);
|
||||
if (charlen < 1) {
|
||||
cERROR(1,
|
||||
("cifs_strtoUCS: char2uni returned %d",
|
||||
charlen));
|
||||
("strtoUCS: char2uni of %d returned %d",
|
||||
(int)*from, charlen));
|
||||
/* A question mark */
|
||||
to[i] = cpu_to_le16(0x003f);
|
||||
charlen = 1;
|
||||
|
@ -338,8 +338,7 @@ static int cifs_relock_file(struct cifsFileInfo *cifsFile)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int cifs_reopen_file(struct inode *inode, struct file *file,
|
||||
int can_flush)
|
||||
static int cifs_reopen_file(struct file *file, int can_flush)
|
||||
{
|
||||
int rc = -EACCES;
|
||||
int xid, oplock;
|
||||
@ -347,13 +346,12 @@ static int cifs_reopen_file(struct inode *inode, struct file *file,
|
||||
struct cifsTconInfo *pTcon;
|
||||
struct cifsFileInfo *pCifsFile;
|
||||
struct cifsInodeInfo *pCifsInode;
|
||||
struct inode * inode;
|
||||
char *full_path = NULL;
|
||||
int desiredAccess;
|
||||
int disposition = FILE_OPEN;
|
||||
__u16 netfid;
|
||||
|
||||
if (inode == NULL)
|
||||
return -EBADF;
|
||||
if (file->private_data) {
|
||||
pCifsFile = (struct cifsFileInfo *)file->private_data;
|
||||
} else
|
||||
@ -368,25 +366,37 @@ static int cifs_reopen_file(struct inode *inode, struct file *file,
|
||||
}
|
||||
|
||||
if (file->f_path.dentry == NULL) {
|
||||
up(&pCifsFile->fh_sem);
|
||||
cFYI(1, ("failed file reopen, no valid name if dentry freed"));
|
||||
FreeXid(xid);
|
||||
return -EBADF;
|
||||
cERROR(1, ("no valid name if dentry freed"));
|
||||
dump_stack();
|
||||
rc = -EBADF;
|
||||
goto reopen_error_exit;
|
||||
}
|
||||
|
||||
inode = file->f_path.dentry->d_inode;
|
||||
if(inode == NULL) {
|
||||
cERROR(1, ("inode not valid"));
|
||||
dump_stack();
|
||||
rc = -EBADF;
|
||||
goto reopen_error_exit;
|
||||
}
|
||||
|
||||
cifs_sb = CIFS_SB(inode->i_sb);
|
||||
pTcon = cifs_sb->tcon;
|
||||
|
||||
/* can not grab rename sem here because various ops, including
|
||||
those that already have the rename sem can end up causing writepage
|
||||
to get called and if the server was down that means we end up here,
|
||||
and we can never tell if the caller already has the rename_sem */
|
||||
full_path = build_path_from_dentry(file->f_path.dentry);
|
||||
if (full_path == NULL) {
|
||||
rc = -ENOMEM;
|
||||
reopen_error_exit:
|
||||
up(&pCifsFile->fh_sem);
|
||||
FreeXid(xid);
|
||||
return -ENOMEM;
|
||||
return rc;
|
||||
}
|
||||
|
||||
cFYI(1, (" inode = 0x%p file flags are 0x%x for %s",
|
||||
cFYI(1, ("inode = 0x%p file flags 0x%x for %s",
|
||||
inode, file->f_flags,full_path));
|
||||
desiredAccess = cifs_convert_flags(file->f_flags);
|
||||
|
||||
@ -401,13 +411,6 @@ static int cifs_reopen_file(struct inode *inode, struct file *file,
|
||||
and server version of file size can be stale. If we knew for sure
|
||||
that inode was not dirty locally we could do this */
|
||||
|
||||
/* buf = kmalloc(sizeof(FILE_ALL_INFO), GFP_KERNEL);
|
||||
if (buf == 0) {
|
||||
up(&pCifsFile->fh_sem);
|
||||
kfree(full_path);
|
||||
FreeXid(xid);
|
||||
return -ENOMEM;
|
||||
} */
|
||||
rc = CIFSSMBOpen(xid, pTcon, full_path, disposition, desiredAccess,
|
||||
CREATE_NOT_DIR, &netfid, &oplock, NULL,
|
||||
cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
|
||||
@ -831,17 +834,11 @@ ssize_t cifs_user_write(struct file *file, const char __user *write_data,
|
||||
return -EBADF;
|
||||
}
|
||||
if (open_file->invalidHandle) {
|
||||
if ((file->f_path.dentry == NULL) ||
|
||||
(file->f_path.dentry->d_inode == NULL)) {
|
||||
FreeXid(xid);
|
||||
return total_written;
|
||||
}
|
||||
/* we could deadlock if we called
|
||||
filemap_fdatawait from here so tell
|
||||
reopen_file not to flush data to server
|
||||
now */
|
||||
rc = cifs_reopen_file(file->f_path.dentry->d_inode,
|
||||
file, FALSE);
|
||||
rc = cifs_reopen_file(file, FALSE);
|
||||
if (rc != 0)
|
||||
break;
|
||||
}
|
||||
@ -941,8 +938,7 @@ static ssize_t cifs_write(struct file *file, const char *write_data,
|
||||
filemap_fdatawait from here so tell
|
||||
reopen_file not to flush data to
|
||||
server now */
|
||||
rc = cifs_reopen_file(file->f_path.dentry->d_inode,
|
||||
file, FALSE);
|
||||
rc = cifs_reopen_file(file, FALSE);
|
||||
if (rc != 0)
|
||||
break;
|
||||
}
|
||||
@ -1031,8 +1027,7 @@ struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *cifs_inode)
|
||||
read_unlock(&GlobalSMBSeslock);
|
||||
if((open_file->invalidHandle) &&
|
||||
(!open_file->closePend) /* BB fixme -since the second clause can not be true remove it BB */) {
|
||||
rc = cifs_reopen_file(&cifs_inode->vfs_inode,
|
||||
open_file->pfile, FALSE);
|
||||
rc = cifs_reopen_file(open_file->pfile, FALSE);
|
||||
/* if it fails, try another handle - might be */
|
||||
/* dangerous to hold up writepages with retry */
|
||||
if(rc) {
|
||||
@ -1379,32 +1374,6 @@ static int cifs_commit_write(struct file *file, struct page *page,
|
||||
spin_lock(&inode->i_lock);
|
||||
if (position > inode->i_size) {
|
||||
i_size_write(inode, position);
|
||||
/* if (file->private_data == NULL) {
|
||||
rc = -EBADF;
|
||||
} else {
|
||||
open_file = (struct cifsFileInfo *)file->private_data;
|
||||
cifs_sb = CIFS_SB(inode->i_sb);
|
||||
rc = -EAGAIN;
|
||||
while (rc == -EAGAIN) {
|
||||
if ((open_file->invalidHandle) &&
|
||||
(!open_file->closePend)) {
|
||||
rc = cifs_reopen_file(
|
||||
file->f_path.dentry->d_inode, file);
|
||||
if (rc != 0)
|
||||
break;
|
||||
}
|
||||
if (!open_file->closePend) {
|
||||
rc = CIFSSMBSetFileSize(xid,
|
||||
cifs_sb->tcon, position,
|
||||
open_file->netfid,
|
||||
open_file->pid, FALSE);
|
||||
} else {
|
||||
rc = -EBADF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
cFYI(1, (" SetEOF (commit write) rc = %d", rc));
|
||||
} */
|
||||
}
|
||||
spin_unlock(&inode->i_lock);
|
||||
if (!PageUptodate(page)) {
|
||||
@ -1548,8 +1517,7 @@ ssize_t cifs_user_read(struct file *file, char __user *read_data,
|
||||
int buf_type = CIFS_NO_BUFFER;
|
||||
if ((open_file->invalidHandle) &&
|
||||
(!open_file->closePend)) {
|
||||
rc = cifs_reopen_file(file->f_path.dentry->d_inode,
|
||||
file, TRUE);
|
||||
rc = cifs_reopen_file(file, TRUE);
|
||||
if (rc != 0)
|
||||
break;
|
||||
}
|
||||
@ -1635,8 +1603,7 @@ static ssize_t cifs_read(struct file *file, char *read_data, size_t read_size,
|
||||
while (rc == -EAGAIN) {
|
||||
if ((open_file->invalidHandle) &&
|
||||
(!open_file->closePend)) {
|
||||
rc = cifs_reopen_file(file->f_path.dentry->d_inode,
|
||||
file, TRUE);
|
||||
rc = cifs_reopen_file(file, TRUE);
|
||||
if (rc != 0)
|
||||
break;
|
||||
}
|
||||
@ -1792,8 +1759,7 @@ static int cifs_readpages(struct file *file, struct address_space *mapping,
|
||||
while (rc == -EAGAIN) {
|
||||
if ((open_file->invalidHandle) &&
|
||||
(!open_file->closePend)) {
|
||||
rc = cifs_reopen_file(file->f_path.dentry->d_inode,
|
||||
file, TRUE);
|
||||
rc = cifs_reopen_file(file, TRUE);
|
||||
if (rc != 0)
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user