Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag '6.4-rc1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6

Pull cifs client fixes from Steve French:

- fix for copy_file_range bug for very large files that are multiples
of rsize

- do not ignore "isolated transport" flag if set on share

- set rasize default better

- three fixes related to shutdown and freezing (fixes 4 xfstests, and
closes deferred handles faster in some places that were missed)

* tag '6.4-rc1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
cifs: release leases for deferred close handles when freezing
smb3: fix problem remounting a share after shutdown
SMB3: force unmount was failing to close deferred close files
smb3: improve parallel reads of large files
do not reuse connection if share marked as isolated
cifs: fix pcchunk length type in smb2_copychunk_range

+28 -2
+17 -1
fs/cifs/cifsfs.c
··· 246 246 if (cifs_sb->ctx->rasize) 247 247 sb->s_bdi->ra_pages = cifs_sb->ctx->rasize / PAGE_SIZE; 248 248 else 249 - sb->s_bdi->ra_pages = cifs_sb->ctx->rsize / PAGE_SIZE; 249 + sb->s_bdi->ra_pages = 2 * (cifs_sb->ctx->rsize / PAGE_SIZE); 250 250 251 251 sb->s_blocksize = CIFS_MAX_MSGSIZE; 252 252 sb->s_blocksize_bits = 14; /* default 2**14 = CIFS_MAX_MSGSIZE */ ··· 744 744 spin_unlock(&tcon->tc_lock); 745 745 spin_unlock(&cifs_tcp_ses_lock); 746 746 747 + cifs_close_all_deferred_files(tcon); 747 748 /* cancel_brl_requests(tcon); */ /* BB mark all brl mids as exiting */ 748 749 /* cancel_notify_requests(tcon); */ 749 750 if (tcon->ses && tcon->ses->server) { ··· 758 757 } 759 758 760 759 return; 760 + } 761 + 762 + static int cifs_freeze(struct super_block *sb) 763 + { 764 + struct cifs_sb_info *cifs_sb = CIFS_SB(sb); 765 + struct cifs_tcon *tcon; 766 + 767 + if (cifs_sb == NULL) 768 + return 0; 769 + 770 + tcon = cifs_sb_master_tcon(cifs_sb); 771 + 772 + cifs_close_all_deferred_files(tcon); 773 + return 0; 761 774 } 762 775 763 776 #ifdef CONFIG_CIFS_STATS2 ··· 812 797 as opens */ 813 798 .show_options = cifs_show_options, 814 799 .umount_begin = cifs_umount_begin, 800 + .freeze_fs = cifs_freeze, 815 801 #ifdef CONFIG_CIFS_STATS2 816 802 .show_stats = cifs_show_stats, 817 803 #endif
+7
fs/cifs/connect.c
··· 2709 2709 2710 2710 spin_lock(&cifs_tcp_ses_lock); 2711 2711 cifs_sb = CIFS_SB(sb); 2712 + 2713 + /* We do not want to use a superblock that has been shutdown */ 2714 + if (CIFS_MOUNT_SHUTDOWN & cifs_sb->mnt_cifs_flags) { 2715 + spin_unlock(&cifs_tcp_ses_lock); 2716 + return 0; 2717 + } 2718 + 2712 2719 tlink = cifs_get_tlink(cifs_sb_master_tlink(cifs_sb)); 2713 2720 if (tlink == NULL) { 2714 2721 /* can not match superblock if tlink were ever null */
+1 -1
fs/cifs/smb2ops.c
··· 1682 1682 pcchunk->SourceOffset = cpu_to_le64(src_off); 1683 1683 pcchunk->TargetOffset = cpu_to_le64(dest_off); 1684 1684 pcchunk->Length = 1685 - cpu_to_le32(min_t(u32, len, tcon->max_bytes_chunk)); 1685 + cpu_to_le32(min_t(u64, len, tcon->max_bytes_chunk)); 1686 1686 1687 1687 /* Request server copy to target from src identified by key */ 1688 1688 kfree(retbuf);
+3
fs/cifs/smb2pdu.c
··· 1947 1947 init_copy_chunk_defaults(tcon); 1948 1948 if (server->ops->validate_negotiate) 1949 1949 rc = server->ops->validate_negotiate(xid, tcon); 1950 + if (rc == 0) /* See MS-SMB2 2.2.10 and 3.2.5.5 */ 1951 + if (tcon->share_flags & SMB2_SHAREFLAG_ISOLATED_TRANSPORT) 1952 + server->nosharesock = true; 1950 1953 tcon_exit: 1951 1954 1952 1955 free_rsp_buf(resp_buftype, rsp);