1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00

SMB3 client multichannel fix

-----BEGIN PGP SIGNATURE-----
 
 iQGzBAABCgAdFiEE6fsu8pdIjtWE/DpLiiy9cAdyT1EFAmevfUkACgkQiiy9cAdy
 T1HFFwv/YX8A6tU8DKrZXYCEL3q6/0ing7x5uR/Qd1nls8Y+bFDLoDKWWEt4YJyY
 Sv8u9Z5OVA0jzx6/m7zlDRptIj40cvSeYHN8+vZJjgO0d+l7HPYAFAKHwsxeT3a0
 O7XkWtTcoV+WCVUy6bmaGw6LrH7WyVyQdShNKMnwTyxv2aHoEyFistnFK17eoyKk
 +QGQtAl9yGKeX5a+OwM25rUIgA2WmKlJruZd2aSe7GlL5kI7jQrO+LJna8UsB3gH
 D5w/Be4R3hzfuRDNDsb7A3uObs8lMV9PZMIj1Ur09ThikoGXg3D7pisaLEUe4QMN
 2ja24PRCS+7Nz4Ba2RZqll9zMUethbl3MOv7g2agt99yUJtzy197d/HMtrRSFwpM
 EaM7FUbwPxedI+NgVNelFICTWt+paeFqK1m7EU1ArJZ68XMpZdY6gyzsvOOAZBG8
 uKhAwruLMiCA5Ix93m131jz0tXBnSdSUFAWHqRttCBumW91+Lie1tXLGkmhjjzWc
 OXDsH9ea
 =nttU
 -----END PGP SIGNATURE-----

Merge tag 'v6.14-rc2-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6

Pull smb client fix from Steve French:
 "SMB3 client multichannel fix"

* tag 'v6.14-rc2-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
  cifs: pick channels for individual subrequests
This commit is contained in:
Linus Torvalds 2025-02-14 14:42:52 -08:00
commit cabb162eb5
2 changed files with 4 additions and 4 deletions

View file

@ -1508,7 +1508,6 @@ struct cifs_io_parms {
struct cifs_io_request {
struct netfs_io_request rreq;
struct cifsFileInfo *cfile;
struct TCP_Server_Info *server;
pid_t pid;
};

View file

@ -147,7 +147,7 @@ static int cifs_prepare_read(struct netfs_io_subrequest *subreq)
struct netfs_io_request *rreq = subreq->rreq;
struct cifs_io_subrequest *rdata = container_of(subreq, struct cifs_io_subrequest, subreq);
struct cifs_io_request *req = container_of(subreq->rreq, struct cifs_io_request, rreq);
struct TCP_Server_Info *server = req->server;
struct TCP_Server_Info *server;
struct cifs_sb_info *cifs_sb = CIFS_SB(rreq->inode->i_sb);
size_t size;
int rc = 0;
@ -156,6 +156,8 @@ static int cifs_prepare_read(struct netfs_io_subrequest *subreq)
rdata->xid = get_xid();
rdata->have_xid = true;
}
server = cifs_pick_channel(tlink_tcon(req->cfile->tlink)->ses);
rdata->server = server;
if (cifs_sb->ctx->rsize == 0)
@ -198,7 +200,7 @@ static void cifs_issue_read(struct netfs_io_subrequest *subreq)
struct netfs_io_request *rreq = subreq->rreq;
struct cifs_io_subrequest *rdata = container_of(subreq, struct cifs_io_subrequest, subreq);
struct cifs_io_request *req = container_of(subreq->rreq, struct cifs_io_request, rreq);
struct TCP_Server_Info *server = req->server;
struct TCP_Server_Info *server = rdata->server;
int rc = 0;
cifs_dbg(FYI, "%s: op=%08x[%x] mapping=%p len=%zu/%zu\n",
@ -266,7 +268,6 @@ static int cifs_init_request(struct netfs_io_request *rreq, struct file *file)
open_file = file->private_data;
rreq->netfs_priv = file->private_data;
req->cfile = cifsFileInfo_get(open_file);
req->server = cifs_pick_channel(tlink_tcon(req->cfile->tlink)->ses);
if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_RWPIDFORWARD)
req->pid = req->cfile->pid;
} else if (rreq->origin != NETFS_WRITEBACK) {