Bug 2727

Summary: CIFS Kernel error message
Product: File System Reporter: Gael STEPHAN (pix)
Component: Samba/SMBAssignee: Steve French (sfrench)
Status: RESOLVED CODE_FIX    
Severity: high    
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.6-1.370 (based on 2.6.6-bk5) Subsystem:
Regression: --- Bisected commit-id:

Description Gael STEPHAN 2004-05-19 02:30:43 UTC
Distribution: Fedora Core 2
Hardware Environment: Dell 1750 w Perc/DI
Software Environment: duplicity (http://www.nongnu.org/duplicity/)
Problem Description:
I'm using duplicity to backup a cifs mount locally (remote server: Dell NAS 745
using Windows 2003 Appliance). After 4GB data transferred (over 100GB) i noticed
six occurences of this missage in dmesg:

Badness in sleep_on_timeout at kernel/sched.c:2528
 [<02280591>] sleep_on_timeout+0x5d/0xb1
 [<02115e26>] default_wake_function+0x0/0xc
 [<42ac9f97>] SendReceive+0x1c1/0x336 [cifs]
 [<42abc155>] CIFSFindFirst+0x1f0/0x278 [cifs]
 [<42ac5d4b>] cifs_readdir+0x27d/0xa60 [cifs]
 [<0214eb09>] filldir64+0x0/0x12e
 [<0214e7f6>] vfs_readdir+0x7a/0x9b
 [<0214eb09>] filldir64+0x0/0x12e
 [<0214ec9c>] sys_getdents64+0x65/0xaa
 [<0214dfa8>] generic_file_fcntl+0xd7/0x140


Steps to reproduce:
-mount a cifs share over windows 2003 appliance
-do duplicity-like file access (non linear reads, it reads an amount of data,
compress/sign it, writes it locally, then read more data, etc...)
-check dmesg
Comment 1 Arjan van de Ven 2004-05-19 02:49:33 UTC
sleep_on_timeout is a deprecated (and broken) API that shouldn't be used in new
code; however this seems to have been added recently to CIFS.....

The warning in question is that sleep_on_timeout() is called without the BKL
helt, which is invalid usage of that API.
Comment 2 Steve French 2004-07-19 20:15:26 UTC
I had not noticed this defect - will presumably simply need to change to 
wait_event_interruptible with timeout
Comment 3 Steve French 2004-07-26 13:05:03 UTC
I looked around and did not see a replacement for this function in 
include/linux/wait.h (uninterruptible wait on event with timeout).  Is the 
best available way to remove this function to replace with schedule_timeout 
inside a loop checking if the event is satisfied? 
Comment 4 Steve French 2005-03-14 07:05:46 UTC
Fixed long ago. Probably in the 2.6.9 merge.