Bug 7528

Summary: Не работает запись больших файлов на cмонтированный ресурс
Product: CIFS@Etersoft Reporter: Евгений Шкригунов <eshkrig>
Component: прочееAssignee: Pavel Shilovsky <piastry>
Status: CLOSED FIXED QA Contact:
Severity: critical    
Priority: P4 CC: amorozov, baraka, lav
Version: не указана   
Target Milestone: ---   
Hardware: PC   
OS: Gentoo   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Deadline: 2011-09-05   

Description Евгений Шкригунов 2011-08-12 17:23:01 MSK
После обновления возникла проблема с записью больших файлов (несколько МБ) на примонтированный ресурс
ядро: 2.6.39-gentoo-r3
etercifs: 4.8.2-eter1

Выглядит это так:
kernel: CIFS VFS: sends on sock ffff8803c087a080 stuck for 15 seconds                                                                                          
kernel: CIFS VFS: Error -11 sending data on socket to server                                                                                                   
kernel: CIFS VFS: Unexpected SMB signature                                                                                                                     
kernel: CIFS VFS: Server 192.168.2.1 has not responded in 300 seconds. Reconnecting...                                                                         

Вот кусок лога после echo 7 > /proc/fs/cifs/cifsFYI
cifs/file.c: CIFS VFS: in cifs_writepages as Xid: 6746 with uid: 10765                                                                                         
cifs/cifssmb.c: write2 at 0 32768 bytes                                                                                                                        
cifs/transport.c: For smb_command 47                                                                                                                           
cifs/transport.c: Sending smb:  total_len 32836                                                                                                                
cifs/connect.c: rfc1002 length 0x27                                                                                                                            
cifs/transport.c: sync_mid_result: cmd=47 mid=33 state=4                                                                                                       
Status code returned 0xc0000022 NT_STATUS_ACCESS_DENIED
cifs/netmisc.c: Mapping smb error code 0xc0000022 to POSIX err -13                                                                                             
cifs/misc.c: Null buffer passed to cifs_small_buf_release                                                                                                      
cifs/cifssmb.c: Send error Write2 = -13                                                                                                                        
cifs/file.c: Write2 rc=-13, wrote=0                                                                                                                            
cifs/file.c: CIFS VFS: leaving cifs_writepages (xid = 6746) rc = -13                                                                                           
cifs/cifsfs.c: cifs_file_aio_write: -13 rc on ffff880242737090 inode                                                                                           
cifs/xattr.c: CIFS VFS: in cifs_getxattr as Xid: 6747 with uid: 10765                                                                                          
cifs/xattr.c: Security xattr namespace not supported yet                                                                                                       
cifs/xattr.c: CIFS VFS: leaving cifs_getxattr (xid = 6747) rc = -95                                                                                            
cifs/file.c: write_begin from 32768 len 4096                                                                                                                   
cifs/file.c: write_end for page ffffea000abf8340 from pos 32768 with 4096 bytes                                                                                
cifs/file.c: write_begin from 36864 len 4096                                                                                                                   
cifs/file.c: write_end for page ffffea0004a908c8 from pos 36864 with 4096 bytes                                                                                
cifs/file.c: write_begin from 40960 len 4096                                                                                                                   
cifs/file.c: write_end for page ffffea000d694800 from pos 40960 with 4096 bytes                                                                                
cifs/file.c: write_begin from 45056 len 4096                                                                                                                   
cifs/file.c: write_end for page ffffea00058ecab8 from pos 45056 with 4096 bytes                                                                                
cifs/file.c: write_begin from 49152 len 4096                                                                                                                   
cifs/file.c: write_end for page ffffea000d0f30c0 from pos 49152 with 4096 bytes                                                                                
cifs/file.c: write_begin from 53248 len 4096                                                                                                                   
cifs/file.c: write_end for page ffffea000890f480 from pos 53248 with 4096 bytes                                                                                
cifs/file.c: write_begin from 57344 len 4096                                                                                                                   
cifs/file.c: write_end for page ffffea000b30b0b0 from pos 57344 with 4096 bytes                                                                                
cifs/file.c: write_begin from 61440 len 4096                                                                                                                   
cifs/file.c: write_end for page ffffea0005fdef88 from pos 61440 with 4096 bytes                                                                                
cifs/file.c: CIFS VFS: in cifs_writepages as Xid: 6748 with uid: 10765                                                                                         
cifs/cifssmb.c: write2 at 32768 32768 bytes                                                                                                                    
cifs/transport.c: For smb_command 47                                                                                                                           
cifs/transport.c: Sending smb:  total_len 32836                                                                                                                
cifs/file.c: CIFS VFS: in cifs_writepages as Xid: 6749 with uid: 0                                                                                             
cifs/file.c: CIFS VFS: leaving cifs_writepages (xid = 6749) rc = 0                                                                                             
cifs/cifssmb.c: In echo request                                                                                                                                
cifs/transport.c: For smb_command 43                                                                                                                           
cifs/transport.c: Sending smb:  total_len 42                                                                                                                   
cifs/transport.c: Sending smb:  total_len 39                                                                                                                   
cifs/transport.c: issued NT_CANCEL for mid 34, rc = 0                                                                                                          
cifs/cifssmb.c: Send error Write2 = -512                                                                                                                       
cifs/file.c: Write2 rc=-512, wrote=0                                                                                                                           
cifs/file.c: CIFS VFS: leaving cifs_writepages (xid = 6748) rc = -512                                                                                          
cifs/cifsfs.c: cifs_file_aio_write: -512 rc on ffff880242737090 inode                                                                                          
cifs/file.c: CIFS VFS: in cifs_writepages as Xid: 6750 with uid: 10765                                                                                         
cifs/file.c: CIFS VFS: leaving cifs_writepages (xid = 6750) rc = 0                                                                                             
cifs/file.c: Flush inode ffff880242737090 file ffff8800674f4140 rc -5                                                                                          
cifs/file.c: closing last open instance for inode ffff880242737090                                                                                             

Варианты с параметрами в /proc/fs/cifs/*, опциями монтирования и способами копирования испробованы все.

По этим ссылкам описана проблема и приведено исправление для cifs в ядре
http://www.gossamer-threads.com/lists/linux/kernel/1388032
https://bugzilla.kernel.org/show_bug.cgi?id=36952
http://article.gmane.org/gmane.linux.kernel.cifs/3595

Симптомы моей проблемы теже, что и в первой ссылке.

Поправьте, пожалуйста, у себя.
Comment 1 Евгений Шкригунов 2011-08-12 17:38:03 MSK
Еще одна ссылка
http://www.mail-archive.com/linux-cifs@vger.kernel.org/msg03367.html

поиск в google:
2.6.39 CIFS
Comment 2 Pavel Shilovsky 2011-08-21 19:50:19 MSK
В 2.6.39.4 появились следующие три патча, которые должны исправить ситуацию:
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.39.y.git;a=commitdiff;h=0388b9459eb4752072e4b3b61e809d3678f0bf45
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.39.y.git;a=commitdiff;h=c0f3315e568a5424c3b84b987cd57aaecc5aed9b
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.39.y.git;a=commitdiff;h=3d729b1a87d579ce9ebec2008ebbfa1100f0cb90

На днях собираюсь смержить исходники для 39 ядра со стабильной веткой.
Comment 3 Pavel Shilovsky 2011-08-26 17:45:45 MSK
Смежил stable апдейты, выложил в репо cifs-2.6. После решения баги http://bugs.etersoft.ru/show_bug.cgi?id=7476 выложу новую версию etercifs.
Comment 4 Евгений Шкригунов 2011-09-01 14:21:16 MSK
Пожалуйста, не переносите сроки - доделайте исправление. Этот отчет тоже появился здесь не сразу - в итоге уже больше месяца, как не работает.
Comment 5 Pavel Shilovsky 2011-09-05 17:25:12 MSK
Решено в etercifs-5.0.0.