linux/fs/cifs
David Howells 0174ee9947 cifs: Implement cache I/O by accessing the cache directly
Move cifs to using fscache DIO API instead of the old upstream I/O API as
that has been removed.  This is a stopgap solution as the intention is that
at sometime in the future, the cache will move to using larger blocks and
won't be able to store individual pages in order to deal with the potential
for data corruption due to the backing filesystem being able insert/remove
bridging blocks of zeros into its extent list[1].

cifs then reads and writes cache pages synchronously and one page at a time.

The preferred change would be to use the netfs lib, but the new I/O API can
be used directly.  It's just that as the cache now needs to track data for
itself, caching blocks may exceed page size...

This code is somewhat borrowed from my "fallback I/O" patchset[2].

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Steve French <smfrench@gmail.com>
cc: Shyam Prasad N <nspmangalore@gmail.com>
cc: linux-cifs@vger.kernel.org
cc: linux-cachefs@redhat.com
Link: https://lore.kernel.org/r/YO17ZNOcq+9PajfQ@mit.edu [1]
Link: https://lore.kernel.org/r/202112100957.2oEDT20W-lkp@intel.com/ [2]
Acked-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
2022-02-01 10:29:18 -06:00
..
asn1.c cifs: decoding negTokenInit with generic ASN1 decoder 2021-06-20 21:28:17 -05:00
cifs_debug.c cifs: adjust DebugData to use chans_need_reconnect for conn status 2022-01-02 20:38:46 -06:00
cifs_debug.h cifs: use SPDX-Licence-Identifier 2021-06-20 21:28:17 -05:00
cifs_dfs_ref.c cifs: support nested dfs links over reconnect 2021-11-10 16:30:13 -06:00
cifs_fs_sb.h cifs: support nested dfs links over reconnect 2021-11-10 16:30:13 -06:00
cifs_ioctl.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
cifs_spnego_negtokeninit.asn1 cifs: decoding negTokenInit with generic ASN1 decoder 2021-06-20 21:28:17 -05:00
cifs_spnego.c cifs: use the chans_need_reconnect bitmap for reconnect status 2022-01-02 20:38:46 -06:00
cifs_spnego.h cifs: use the chans_need_reconnect bitmap for reconnect status 2022-01-02 20:38:46 -06:00
cifs_swn.c cifs: cifs_ses_mark_for_reconnect should also update reconnect bits 2022-01-19 11:10:58 -06:00
cifs_swn.h cifs: simplify SWN code with dummy funcs instead of ifdefs 2021-04-25 16:28:22 -05:00
cifs_unicode.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
cifs_unicode.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifs_uniupr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifsacl.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
cifsacl.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
cifsencrypt.c cifs: take cifs_tcp_ses_lock for status checks 2022-01-07 20:07:07 -06:00
cifsfs.c cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
cifsfs.h cifs: update internal module number 2022-01-19 23:14:34 -06:00
cifsglob.h cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
cifspdu.h cifs: fix FILE_BOTH_DIRECTORY_INFO definition 2022-01-15 10:08:47 -06:00
cifsproto.h cifs: cifs_ses_mark_for_reconnect should also update reconnect bits 2022-01-19 11:10:58 -06:00
cifsroot.c cifs: Standardize logging output 2020-06-01 00:10:18 -05:00
cifssmb.c cifs: maintain a state machine for tcp/smb/tcon sessions 2022-01-07 20:09:22 -06:00
connect.c cifs: unlock chan_lock before calling cifs_put_tcp_session 2022-01-29 12:41:54 -06:00
dfs_cache.c cifs: cifs_ses_mark_for_reconnect should also update reconnect bits 2022-01-19 11:10:58 -06:00
dfs_cache.h cifs: support share failover when remounting 2021-07-22 11:43:23 -05:00
dir.c cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
dns_resolve.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
dns_resolve.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
export.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
file.c cifs: Implement cache I/O by accessing the cache directly 2022-02-01 10:29:18 -06:00
fs_context.c cifs: serialize all mount attempts 2022-01-18 00:10:03 -06:00
fs_context.h cifs: send workstation name during ntlmssp session setup 2021-11-08 13:07:56 -06:00
fscache.c cifs: Implement cache I/O by accessing the cache directly 2022-02-01 10:29:18 -06:00
fscache.h cifs: Implement cache I/O by accessing the cache directly 2022-02-01 10:29:18 -06:00
inode.c cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
ioctl.c cifs: fix incorrect kernel doc comments 2021-09-13 18:29:46 -05:00
Kconfig cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
link.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
Makefile cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
misc.c cifs: quirk for STATUS_OBJECT_NAME_INVALID returned for non-ASCII dfs refs 2022-01-17 13:28:25 -06:00
netlink.c cifs: Constify static struct genl_ops 2021-06-20 21:28:16 -05:00
netlink.h cifs: Register generic netlink family 2020-12-14 09:16:22 -06:00
netmisc.c cifs: cifs_ses_mark_for_reconnect should also update reconnect bits 2022-01-19 11:10:58 -06:00
nterr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
nterr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
ntlmssp.h smb3: send NTLMSSP version information 2022-01-19 23:14:15 -06:00
readdir.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
rfc1002pdu.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
sess.c smb3: send NTLMSSP version information 2022-01-19 23:14:15 -06:00
smb1ops.c cifs: move superblock magic defitions to magic.h 2022-01-15 10:08:44 -06:00
smb2file.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
smb2glob.h cifs: move superblock magic defitions to magic.h 2022-01-15 10:08:44 -06:00
smb2inode.c cifs: for compound requests, use open handle if possible 2021-11-10 11:05:20 -06:00
smb2maperror.c cifs: Create a new shared file holding smb2 pdu definitions 2021-11-05 09:50:57 -05:00
smb2misc.c cifs: Fix smb311_update_preauth_hash() kernel-doc comment 2022-01-15 10:08:33 -06:00
smb2ops.c cifs: move superblock magic defitions to magic.h 2022-01-15 10:08:44 -06:00
smb2pdu.c smb3: send NTLMSSP version information 2022-01-19 23:14:15 -06:00
smb2pdu.h cifs: Move SMB2_Create definitions to the shared area 2021-11-05 09:55:36 -05:00
smb2proto.h cifs: use the chans_need_reconnect bitmap for reconnect status 2022-01-02 20:38:46 -06:00
smb2status.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
smb2transport.c cifs: protect all accesses to chan_* with chan_lock 2022-01-19 11:10:54 -06:00
smbdirect.c smbdirect: missing rc checks while waiting for rdma events 2021-06-22 12:08:32 -05:00
smbdirect.h cifs: smbd: Do not schedule work to send immediate packet on every receive 2020-04-07 12:41:16 -05:00
smbencrypt.c cifs: rename cifs_common to smbfs_common 2021-09-08 23:59:26 -05:00
smberr.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
trace.c smb3: Cleanup license mess 2019-01-24 09:37:33 -06:00
trace.h smb3: add dynamic trace points for socket connection 2021-11-05 16:20:24 -05:00
transport.c cifs: protect all accesses to chan_* with chan_lock 2022-01-19 11:10:54 -06:00
unc.c cifs: don't cargo-cult strndup() 2021-04-25 16:28:23 -05:00
winucase.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
xattr.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00