[Devel] Бага 3239

Pavel Shilovsky =?iso-8859-1?q?piastry_=CE=C1_etersoft=2Eru?=
Чт Фев 26 11:03:33 MSK 2009


Провёл кое-какие исследования, увеличив время задержки на 10 секунд для 
наглядности.

шара //server/upload
uid=piastry

Создаём каталог "4", смотрим сразу:
[piastry на tartarus 4]$ ls -la
итого 0
drwxr-sr-x 2 nobody  users   0 Фев 26 10:39 .
drwxr-sr-x 3 piastry piastry 0 Фев 26 10:39 ..

смотрим чуть позже:
[piastry на tartarus 4]$ ls -la
итого 0
drwxr-sr-x 2 piastry piastry 0 Фев 26 10:39 .
drwxr-sr-x 3 piastry piastry 0 Фев 26 10:39 ..

Мы видим, что атрибуты применяются позже самого создания, сначала приезжают 
те, что на сервере. В таком случае всё решается добавлением одной строчки в 
функцию cifs_mkdir - делаем айнод невалидным после создания.

diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 9c548f1..de80174 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -949,6 +949,7 @@ int cifs_mkdir(struct inode *inode, struct dentry 
*direntry, int mode)
                           frame was long enough */
                        posix_fill_in_inode(direntry->d_inode,
                                        pInfo, 1 /* NewInode */);
+                       CIFS_I(direntry->d_inode)->time = 0;
 #ifdef CONFIG_CIFS_DEBUG2
                        cFYI(1, ("instantiated dentry %p %s to inode %p",
                                direntry, direntry->d_name.name, newinode));



У меня заработало.

-- 
Best regards,
Pavel Shilovsky.


Подробная информация о списке рассылки devel