[Samba] : Win XP Client does not remove directories

Björn Mayer bjoern.mayer at siempelkamp.com
Fri Apr 28 11:58:45 GMT 2006


Hello mailinglist,

I have a strange problem, which occurs sometimes on some WinXP clients. 
It is not 100% reproducable for me, but it returns regular.

The problem is, that somehow a user can't delete a directory. All files 
in the directory will be removed successfully, but the directory itself 
not.
Deleting with the Explorer or over the cmd-console returns in the same 
result.
First the command seemed to be successful, but after one refresh all 
"deleted" folders are back again, because they aren't physically removed 
from the linux-box.

I don't know, if it is an Samba or Windows Problem, because if i went to 
another XP machine and do exactly the same (including connecting with 
the same user and passwd) the folder will be removed successfully.

Often one (sometimes more than one) restart on the "infected" PC will 
fix it there, too.

All Win-Machines are XP with Service Pack 2.

As i already said, i don't know whom to blame for that. On the one hand 
it seems to be a specific Windows-problem, because other machines does 
not show the same behaviour at the same time under nearly the same 
conditions.
On the other hand nobody ever mentioned that with our old Win Server 
2003 Fileserver, who is nowadays replaced by Samba.

Any Ideas?

My Linux-Box is a Suse Enterprise Server 9 with Samba Version 
3.0.20b-3.4-SUSE.

The following logfiles extracts show the log.smbd grep(ed) for the 
string "C_493____".
What i have done there, is first the try to delete the folder "! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms" on the share with the 
WinXP Explorer and then refreshed the Explorer's view.

The first extract shows the successful operation with a well working 
client.
------------------------------------------------------------------------------------
call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1005 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1005 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt 
(fnum = -1) level=1004 call=5 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt, expect_close = 1
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms, expect_close = 1
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1005 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! Mitarbeiter-Pool/CA/C_493____ (fnum = -1) 
level=1004 call=5 total_data=0
   creating new dirptr 256 for path ! Mitarbeiter-Pool/CA/C_493____, 
expect_close = 1
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms, expect_close = 1
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = -1) level=1004 
call=5 total_data=0
   rmdir ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms
   kernel_check_notify: kernel change notify on ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt fd[0]=30 (signals_received=1)
   kernel change notify on ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt 
(ntflags=0x3 flags=0x1e) fd=30
   call_nt_transact_notify_change: notify change called on directory 
name = ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = -1) level=1004 
call=5 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV, expect_close = 1
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = -1) level=1006 
call=5 total_data=0
   kernel change notify on ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (ntflags=0x17 flags=0x3e) 
fd=29
   call_nt_transact_notify_change: notify change called on directory 
name = ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV
   rmdir_internals: couldn't remove directory ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms : Datei oder Verzeichnis 
nicht gefunden
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = -1) level=1004 
call=5 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV, expect_close = 1
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = -1) level=1005 
call=5 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = -1) level=1004 
call=5 total_data=0
   call_trans2qfilepathinfo ! Mitarbeiter-Pool/CA/C_493____ (fnum = -1) 
level=1004 call=5 total_data=0
   creating new dirptr 256 for path ! Mitarbeiter-Pool/CA/C_493____, 
expect_close = 1
   call_trans2qfilepathinfo ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt 
(fnum = -1) level=1004 call=5 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt, expect_close = 1
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt, expect_close = 1
   call_trans2qfilepathinfo ! Mitarbeiter-Pool/CA/C_493____ (fnum = 
8572) level=1006 call=7 total_data=0
   creating new dirptr 256 for path ! Mitarbeiter-Pool/CA/C_493____, 
expect_close = 1
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt) returning 0766
   call_trans2qfilepathinfo ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt 
(fnum = 8574) level=1004 call=7 total_data=0
   call_trans2qfilepathinfo ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt 
(fnum = 8574) level=1005 call=7 total_data=0
   call_trans2qfilepathinfo ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt 
(fnum = 8574) level=1004 call=7 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt, expect_close = 1
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms) returning 
0766
------------------------------------------------------------------------------------


The second extract is the try from a "infected" machine.
------------------------------------------------------------------------------------
unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms) returning 0766
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8631) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8631) level=1005 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8631) level=1004 
call=7 total_data=0
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms) returning 
0766
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8633) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8633) level=1005 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8633) level=1004 
call=7 total_data=0
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms) returning 
0766
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8635) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8635) level=1005 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8635) level=1004 
call=7 total_data=0
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms) returning 
0766
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8637) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8637) level=1005 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8637) level=1004 
call=7 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt, expect_close = 1
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms, expect_close = 1
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms) returning 
0766
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8642) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8642) level=1005 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum = 8642) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! Mitarbeiter-Pool/CA/C_493____ (fnum = 
8645) level=1006 call=7 total_data=0
   creating new dirptr 256 for path ! Mitarbeiter-Pool/CA/C_493____, 
expect_close = 1
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms, expect_close = 1
   call_trans2setfilepathinfo(8) ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/Alarms (fnum 8647) 
info_level=1013 totdata=1
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8648) level=1006 
call=7 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV, expect_close = 1
   kernel change notify on ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (ntflags=0x17 flags=0x3e) 
fd=34
   call_nt_transact_notify_change: notify change called on directory 
name = ! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV) returning 
0766
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8651) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8651) level=1005 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8651) level=1004 
call=7 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt, expect_close = 1
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV) returning 
0766
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8655) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8655) level=1005 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8655) level=1004 
call=7 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt, expect_close = 1
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV) returning 
0766
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8659) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8659) level=1005 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8659) level=1004 
call=7 total_data=0
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV, expect_close = 1
   unix_mode(! Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV) returning 
0766
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8662) level=1004 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8662) level=1005 
call=7 total_data=0
   call_trans2qfilepathinfo ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt/SP_CSV (fnum = 8662) level=1004 
call=7 total_data=0
   creating new dirptr 256 for path ! Mitarbeiter-Pool/CA/C_493____, 
expect_close = 1
   creating new dirptr 256 for path ! 
Mitarbeiter-Pool/CA/C_493____/00_Gesamt, expect_close = 1
------------------------------------------------------------------------------------

Thanks for every hint, Björn


More information about the samba mailing list