Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e1253b5 authored by Steve French's avatar Steve French
Browse files

[CIFS] Correct cifs tcp retry when some data sent before getting EAGAIN.


Continue implementation of cifs umount begin to allow force unmounts of
cifs mounts.

Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent 02c37a6d
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -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;

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

/* BB FIXME - finish BB */
	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;
}
+3 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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) {