linux/fs/cifs
Sachin Prabhu 466bd31bbd cifs: Avoid calling unlock_page() twice in cifs_readpage() when using fscache
When reading a single page with cifs_readpage(), we make a call to
fscache_read_or_alloc_page() which once done, asynchronously calls
the completion function cifs_readpage_from_fscache_complete(). This
completion function unlocks the page once it has been populated from
cache. The module then attempts to unlock the page a second time in
cifs_readpage() which leads to warning messages.

In case of a successful call to fscache_read_or_alloc_page() we should skip
the second unlock_page() since this will be called by the
cifs_readpage_from_fscache_complete() once the page has been populated by
fscache.

With the modifications to cifs_readpage_worker(), we will need to re-grab the
page lock in cifs_write_begin().

The problem was first noticed when testing new fscache patches for cifs.
https://bugzilla.redhat.com/show_bug.cgi?id=1005737

Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <smfrench@gmail.com>
2013-09-13 16:24:49 -05:00
..
asn1.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cache.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifs_debug.c cifs: try to handle the MUST SecurityFlags sanely 2013-06-26 17:31:55 -05:00
cifs_debug.h [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifs_dfs_ref.c cifs: fix composing of mount options for DFS referrals 2013-05-24 13:08:31 -05:00
cifs_fs_sb.h cifs: Convert struct cifs_sb_info to use kuids and kgids 2013-02-13 07:28:54 -08:00
cifs_spnego.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifs_spnego.h [CIFS] Rename three structures to avoid camel case 2011-05-27 04:34:02 +00:00
cifs_unicode.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifs_unicode.h cifs: add new case-insensitive conversion routines that are based on wchar_t's 2013-09-08 14:38:05 -05:00
cifs_uniupr.h cifs: correction of unicode header files 2010-08-20 00:46:42 +00:00
cifsacl.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifsacl.h cifs: fix SID binary to string conversion 2012-12-11 11:48:49 -06:00
cifsencrypt.c cifs: fix bad error handling in crypto code 2013-07-31 13:44:59 -05:00
cifsfs.c CIFS: Respect epoch value from create lease context v2 2013-09-09 22:52:18 -05:00
cifsfs.h Merge branch 'for-next' of git://git.samba.org/sfrench/cifs-2.6 2013-07-03 14:06:30 -07:00
cifsglob.h CIFS: Respect epoch value from create lease context v2 2013-09-09 22:52:18 -05:00
cifspdu.h CIFS: Implement follow_link for nounix CIFS mounts 2013-09-08 14:27:41 -05:00
cifsproto.h cifs: Start using per session key for smb2/3 for signature generation 2013-09-08 14:47:50 -05:00
cifssmb.c CIFS: Implement follow_link for nounix CIFS mounts 2013-09-08 14:27:41 -05:00
connect.c CIFS: Store lease state itself rather than a mapped oplock value 2013-09-09 22:52:05 -05:00
dir.c cifs: convert case-insensitive dentry ops to use new case conversion routines 2013-09-08 14:38:08 -05:00
dns_resolve.c cifs: fix composing of mount options for DFS referrals 2013-05-24 13:08:31 -05:00
dns_resolve.h DNS: Separate out CIFS DNS Resolver code 2010-08-05 17:17:51 +00:00
export.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
file.c cifs: Avoid calling unlock_page() twice in cifs_readpage() when using fscache 2013-09-13 16:24:49 -05:00
fscache.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
fscache.h [CIFS] Rename three structures to avoid camel case 2011-05-27 04:34:02 +00:00
inode.c Merge branch 'akpm' (patches from Andrew Morton) 2013-09-12 15:44:27 -07:00
ioctl.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
Kconfig [CIFS] SMB3 Signing enablement 2013-06-26 23:45:05 -05:00
link.c CIFS: Implement follow_link for SMB2 2013-09-08 14:27:34 -05:00
Makefile cifs: add new case-insensitive conversion routines that are based on wchar_t's 2013-09-08 14:38:05 -05:00
misc.c CIFS: Replace clientCanCache* bools with an integer 2013-09-08 17:49:17 -05:00
netmisc.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
nterr.c CIFS: Rename 7 error codes to NT_ style 2012-07-24 10:25:10 -05:00
nterr.h CIFS: Rename 7 error codes to NT_ style 2012-07-24 10:25:10 -05:00
ntlmssp.h CIFS: Add session setup/logoff capability for SMB2 2012-07-24 21:54:57 +04:00
readdir.c CIFS: Implement follow_link for SMB2 2013-09-08 14:27:34 -05:00
rfc1002pdu.h
sess.c cifs: Add a variable specific to NTLMSSP for key exchange. 2013-09-08 14:47:49 -05:00
smb1ops.c CIFS: Store lease state itself rather than a mapped oplock value 2013-09-09 22:52:05 -05:00
smb2file.c CIFS: Store lease state itself rather than a mapped oplock value 2013-09-09 22:52:05 -05:00
smb2glob.h [CIFS] SMB3 Signing enablement 2013-06-26 23:45:05 -05:00
smb2inode.c CIFS: Implement follow_link for SMB2 2013-09-08 14:27:34 -05:00
smb2maperror.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
smb2misc.c CIFS: Respect epoch value from create lease context v2 2013-09-09 22:52:18 -05:00
smb2ops.c CIFS: Respect epoch value from create lease context v2 2013-09-09 22:52:18 -05:00
smb2pdu.c CIFS: Respect epoch value from create lease context v2 2013-09-09 22:52:18 -05:00
smb2pdu.h CIFS: Add create lease v2 context for SMB3 2013-09-09 22:52:14 -05:00
smb2proto.h CIFS: Store lease state itself rather than a mapped oplock value 2013-09-09 22:52:05 -05:00
smb2status.h CIFS: Add SMB2 status codes 2012-07-24 10:25:13 -05:00
smb2transport.c cifs: Start using per session key for smb2/3 for signature generation 2013-09-08 14:47:50 -05:00
smbencrypt.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
smberr.h cifs: map NT_STATUS_ERROR_WRITE_PROTECTED to -EROFS 2010-08-02 12:40:40 +00:00
smbfsctl.h Update headers to update various SMB3 ioctl definitions 2013-06-24 01:56:47 -05:00
transport.c Power management and ACPI updates for 3.11-rc1 2013-07-03 14:35:40 -07:00
winucase.c [CIFS] quiet sparse compile warning 2013-09-08 14:54:24 -05:00
xattr.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00