Skip to content

Commit

Permalink
[CIFS] Correct cifs tcp retry when some data sent before getting EAGAIN.
Browse files Browse the repository at this point in the history
Continue implementation of cifs umount begin to allow force unmounts of
cifs mounts.

Signed-off-by: Steve French <sfrench@us.ibm.com>
  • Loading branch information
Steve French committed Oct 10, 2005
1 parent 02c37a6 commit 5e1253b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
19 changes: 17 additions & 2 deletions fs/cifs/cifsfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -407,9 +407,24 @@ static struct quotactl_ops cifs_quotactl_ops = {

static void cifs_umount_begin(struct super_block * sblock)
{
cERROR(1,("kill all tasks now - umount begin not implemented yet"));
struct cifs_sb_info *cifs_sb;

/* BB FIXME - finish BB */
cifs_sb = CIFS_SB(sb);
if(cifs_sb == NULL)
return -EIO;
if(cifs_sb->tcon == NULL)
return -EIO;
down(&tcon->tconSem);
if (atomic_read(&tcon->useCount) == 1)
tcon->tidStatus = CifsExiting;
up(&tcon->tconSem);

if((cifs->sb->tcon->ses) && (cifs_sb->tcon->ses->server))
{
cERROR(1,("wake up tasks now - umount begin not complete"));
wake_up_all(&server->request_q);
}
/* BB FIXME - finish add checks for tidStatus BB */

return;
}
Expand Down
3 changes: 3 additions & 0 deletions fs/cifs/transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,8 @@ smb_send(struct socket *ssocket, struct smb_hdr *smb_buffer,
}
if (rc < 0)
break;
else
i = 0; /* reset i after each successful send */
iov.iov_base += rc;
iov.iov_len -= rc;
len -= rc;
Expand Down Expand Up @@ -263,6 +265,7 @@ smb_send2(struct socket *ssocket, struct kvec *iov, int n_vec,
}
}
}
i = 0; /* in case we get ENOSPC on the next send */
}

if (rc < 0) {
Expand Down

0 comments on commit 5e1253b

Please sign in to comment.