Age | Commit message (Collapse) | Author | Files | Lines |
|
Got 'religion' about using size_t and ssize_t for read/write stuff
as part of the code to expose 64 bits to the client.
This checkin does all the 'easy' stuff - such as all the read/write/lock
calls - but now comes the harder parts (open & friends) and all the
file enquiry functions.....
Jeremy.
(This used to be commit 36544fe5476f7770bd5748574fc54be7b3ee4d4a)
|
|
files.c: Removed fd bitmap - not needed. Added code to do use arrays rather
than linked list - disabled by default but can be enabled to check
performance.
Jeremy.
(This used to be commit 069efc04545d5fdfc5c40467b8b7554ed5226a2e)
|
|
it if we're in case insensitive mode, and then doing a memcmp rather
than a StrnCaseCmp (which is *horribly* slow) on every lookup.
Fixed bug with refusing NT SMB's (use *brackets* where needed :-).
Jeremy.
(This used to be commit 02b3fddce33a58a4db2102670b502fc0c6f45fab)
|
|
Chris -)-----
(This used to be commit ac13c29d46f564fc340b652b4b71dfa92e4b5b16)
|
|
tactics :-). Protected by #ifdef until used.
Fixed bug in fd_attempt_close() where a pointer to potentially
free'd memory was returned. I hate that.
Added "blocking locks" as a per-share option for performance testing.
Changed is_mangled() so it will return true if called with a pathname
and any component of the pathname was mangled (it was already attempting
to do this, but not checking for a '/' as end-of-mangle).
This should be a better fix for the wierd stat cache bug Andrew identified.
Jeremy.
(This used to be commit 0de01f45980c7bc261248a9cead972a8d8cbd594)
|
|
(This used to be commit 46301b1d2161317f56049934a9e7b658447b2c76)
|
|
I think we need this so we can rule out stat cache bugs when dealing
with bug reports. If we ask a user to disable the stat cache and the
problem persists then we know it isn't a stat cache bug. The stat
cache code is sufficiently complicated that it can be pretty hard to
tell if it is causing problems or not.
(This used to be commit c83f3775cd8a7aad13571926cdd5949a07538771)
|
|
The fix I used is a very conservative fix. I'll leave it up to Jeremy
to put in a better fix. The problem was the detection of mangled
names.
(This used to be commit c96b5fde5ae12bd0d4d6bcff095cf090738c92a4)
|
|
(This used to be commit 7b154dc4313324dfad6cf0117b8ce246bf12bf16)
|
|
painstakingly put in :)
This gets rid of most of the #ifdef LARGE_SMB_INO_T ifdefs around
DEBUG() statements. We just use %.0f in all cases. Makes the code a
bit easier to read :)
(This used to be commit 41f0069afc02169932e04ff0039bb6328eaaf04d)
|
|
prompted by the interpret_security() dead code that Jean-Francois
pointed out I added a make target "finddead" that finds potentially
dead (ie. unused) code. It spat out 304 function names ...
I went through these are deleted many of them, making others static
(finddead also reports functions that are used only in the local
file).
in doing this I have almost certainly deleted some useful code. I may
have even prevented compilation with some compile options. I
apologise. I decided it was better to get rid of this code now and add
back the one or two functions that are needed than to keep all this
baggage.
So, if I have done a bit too much "destroying" then let me know. Keep
the swearing to a minimum :)
One bit I didn't do is the ubibt code. Chris, can you look at that?
Heaps of unused functions there. Can they be made static?
(This used to be commit 2204475c87f3024ea8fd1fbd7385b2def617a46f)
|
|
Jeremy.
(This used to be commit 94d63cc382ac0d8a523db98b93750225082b09b1)
|
|
Added "nt smb support" parameter to allow NT SMB's to be turned off.
Jeremy.
(This used to be commit 63f65f5027d5022153fa2757b49c56829db1725b)
|
|
to oplock break message passing). I think that smbd/nmbd are now
inode and offset size independent (at least for 32 bit and 64 bit
systems).
Now to expose all this new functionality to NT clients.....
Jeremy.
(This used to be commit 5910d07bbf45a34d3c901461f74704c029a79474)
|
|
Nearly at the stage where I can expose the 64-bit-ness to
the NT clients....
Jeremy.
(This used to be commit 422f1dd45074c0e28203aca5952e57bbe56676b6)
|
|
to check for stat64 and friends, and then changes much of Samba
to use the data type SMB_OFF_T for file size information.
stat/fstat/lstat/lseek/ftruncate have now become sys_stat etc. to hide
the 64 bit calls if needed.
Note that this still does not expose 64 bit functionality to the
client, as the changes to the reply_xxx smb's are not yet done.
This code change should make these changes possible.
Still to do before full 64 bit-ness to the client:
fcntl lock code.
statfs code
widening of dev_t and ino_t (now possible due to SMB_DEV_T and SMB_OFF_T
types being in place).
Let me know if wierd things happen after this check-in and I'll
fix them :-).
Jeremy.
(This used to be commit 14500936c321d15995c963766aac67bf1f4e3824)
|
|
observed from NT. We were aligning the data before but not the
parameters. This aligns both.
This change may break some other parts of ipc.c if we have relied on
the alignment somewhere, so if you think this broke something then let
me know.
(This used to be commit d252d331015b7606618ba1422bb669da003da293)
|
|
mangling a name can't increase it's size which isn't true. (imagine a
file called "L B" which mangles to "LB~XX")
The symptoms were that users couldn't run batch files from short
directory names that contained non 8.3 characters (such as spaces).
(This used to be commit c319d8ea3f8b42bb3a8e501642971ed0bdb21583)
|
|
Jeremy.
(This used to be commit e817d836bba3aaf0f732d66bc5a4383a7f7005db)
|
|
always. Don't even install a handler.
(This used to be commit 72c383f4b7bcce5374632dc972df16ab0e2542b9)
|
|
bit file interface for the NT SMB's.
Created a new define, SMB_STRUCT_STAT that currently is
defined to be struct stat - this wil change to a user
defined type containing 64 bit info when the correct
wrappers are written for 64 bit stat(), fstat() and lstat()
calls.
Also changed all sys_xxxx() calls that were previously just
wrappers to the same call prefixed by a dos_to_unix() call
into dos_xxxx() calls. This makes it explicit when a pathname
translation is being done, and when it is not.
Now, all sys_xxx() calls are meant to be wrappers to mask
OS differences, and not silently converting filenames on
the fly.
Jeremy.
(This used to be commit 28aa182dbffaa4ffd86047e608400de4b26e80eb)
|
|
I made this change after getting a segv in reply_pipe_close(). The
funny thing was that pipes_open was 1 and Pipes was NULL. That "can't
happen" and suggests that we have a wild pointer somewhere.
I suspect the rpc code, as I was playing with long share names (a
share called "averylongusername") at the time and the logs show lots
of srvsvc operations. I bet there is a buffer in the rpc code
somewhere that is overflowing and trashing bits of the data segment.
(This used to be commit 9fee8c2eb7bd05431cd9bcfbed3804c8ca1ee593)
|
|
include/smb.h: Moved old typedefs of uint8 etc. into include/includes.h where
all the other defines live (changed them from typedefs to
defines).
Other changes : changed from using uint32 to SMB_DEV_T and SMB_INO_T
in preparation for moving to size independed (ie. 64 bit clean) device
and inode access. Stat call wrapper comes next :-).
Jeremy.
(This used to be commit 3d9ec96de5e04e83abafe9c5d980bd39eee856ea)
|
|
(This used to be commit 3eade55dc7c842bdc50205c330802d211fae54d3)
|
|
correctly. Added new parameter "stat cache size" - set to 50 by default.
I now declare the statcache code officially "open" for business :-).
It gets a hit rate of 97% with a NetBench run and seems to make
using a case insensitive run as efficient as a case sensitive run.
Also tidied up our sys_select usage - added a maxfd parameter and
also added an implementation of select in terms of poll(), for systems
where poll() is much faster. This is disabled by default.
Jeremy.
(This used to be commit 779b924ec1f6c81ff578d22295b20fece698d1fc)
|
|
Jeremy.
(This used to be commit d6a9087e7e626e6e07503dba38854b136fe70c23)
|
|
NetBench testing though.... :-). Attempts to efficiently reduce
the number of stat() calls Samba does.
Jeremy.
(This used to be commit d0e48a2d8072c3e77a57ac6a2fb5044c05f03b41)
|
|
if ((sbuf->st_mode & S_IWUSR) == 0)
result |= aRONLY;
rather than the very complex user/group permissions checks we do
currently. This is equivalent ot setting "alternate permissions = yes"
in the old code. The change is motivated by three main reasons:
1) it's basically impossible to second guess whether a file is
writeable without trying to open it for writing. ACLs, root squash etc
just make it too hard.
2) setting it not RONLY if the owner can write is closer to what NT
does (eg. look at a cdrom - files are not marked read only).
3) it prevents the silly problem of copying files from a read only
share to a writeable share and then finding you can't write to them as
windows preserves the RONLY flag. Lots of people get bitten by this
when they drag a folder from a Samba drive. It also hurts some install
programs.
I have also added a new flag type for loadparm.c called
FLAG_DEPRECATED which I've set for "alternate permissions". I'll soon
add code to testparm to give a warning about deprecated options.
(This used to be commit c4363a12fdc0be329ca2bfeb1d7b89bfe90031dc)
|
|
SMB_SET_FILE_ALLOCATION_INFO.
Office 97 expects this call to succeed when you tell it you do NT SMB calls.
Jeremy.
(This used to be commit 260e7e27401d863e9f580d4748c577334d9fc9d0)
|
|
have an ASSERT macro defined.
Jeremy.
(This used to be commit dbe6ad014a8b5dcbf17d7cd9865650c2e040d666)
|
|
in the rpc code.
(This used to be commit e6ce1c5b5a9f29d8fcbbd23019186ff5c600e795)
|
|
default to overwrite and smbd would default to append. Also, the -a option
(actually a toggle, such that "-a -a" would set the default) was documented
as append mode for nmbd, and *overwrite mode* for smbd.
nmbd now defaults to append mode, to match smbd. The -a option now always
means append, and I've added the -o option to both, meaning overwrite.
Note that the change to nmbd's default behavior may confuse some people.
I've not seen anything about 2.0.0 changes in the WHATSNEW.txt file.
Where would I document a change like this?
Chris -)-----
(This used to be commit b1d374fb14b1fb92a84260f1dcc59a39a4b99a3d)
|
|
if we do then NTws gets a BSOD.
I checked and NT server refuses these queries too :)
(This used to be commit d2fb7ee8f55dd1ff25fca46e18b02a05bc2b71ae)
|
|
explanation.
(This used to be commit c6899df44c34088a4d2bf1edc840320b0ba7e32e)
|
|
basename of a file but the whole file name. silly error.
(This used to be commit 6e00de7a1d3d5f9fa9bcc40db119fcb8602165c9)
|
|
chain_fsp on close (if you don't know what this means, consider yourself
lucky - this one took a day to track down :-).
Jeremy.
(This used to be commit 193cb5382464173e99a538867a266d793f0ceab5)
|
|
the head of an SMB request (ie. are part of a chain) will not be queued -
this will be fixed when we move to the new chain code. In practice, this
doesn't seem to cause much of a problem (in my admittedly limited testing)
bug a debug level zero message will be placed in the log when this
happens to help determine how real the problem is.
smbd/locking.c: New debug messages.
smbd/blocking.c: New blocking code - handles SMBlock, SMBlockread and SMBlockingX
smbd/chgpasswd.c: Fix for master fd leak.
smbd/files.c: Tidyup comment.
smbd/nttrans.c: Added fnum to debug message.
smbd/process.c: Made chain_reply() use construct_reply_common(). Added blocking
lock queue processing into idle loop.
smbd/reply.c: Added queue pushes for SMBlock, SMBlockread and SMBlockingX.
Jeremy.
(This used to be commit e1dd03ecda0bc6d7eaa31070c83774bb5679fd1b)
|
|
Jeremy.
(This used to be commit 9cdb148ef56dc8f74891f5c6e9cae10142bd4c6e)
|
|
include/includes.h: Added nterr.h.
locking/locking.c: Moved blocking lock code into smbd/blocking.c for link purposes.
smbd/close.c: Added blocking lock removal to file close.
smbd/filename.c: Tidied up unix_convert() so I could read it (:-) in preparation
for the stat_cache code.
smbd/nttrans.c: Added WRITE_ATTRIBUTES check.
smbd/reply.c: Fixed multibyte char problem in wildcard mask.
Jeremy.
(This used to be commit 148eaba3dadb1d0bd3ac3ef53da3d9811636e89a)
|
|
locking/locking.c: More blocking lock changes.
Jeremy.
(This used to be commit 2ca4fc95a4227645f1009a057d46b58508846a92)
|
|
could be overwritten in oplock processing code.
Jeremy.
(This used to be commit 908a583b48e37c5e869216f4dc92d4a587ff1238)
|
|
(This used to be commit 722312c326d54849e2552327fcd88ac77257ad2c)
|
|
(This used to be commit f92475aa3cb3ade576c39c02c7996c949c42082a)
|
|
the splitup was done with an axe, not a scalpel, so there are some
rough edges. I mostly wanted to get the general form right with fine
tuning of what goes where to come later. Still, this is better than
what we had before where server.c was a general repository for
anything that didn't fit elsewhere.
(This used to be commit a6d194886a4a5f7507fa37289ff96c1be56f14a6)
|
|
created dosmode.c and filename.c
(This used to be commit 534a90ca44641417c21f6ed6d4b94b1de60f808d)
|
|
server.c without breaking things.
this splits off netprot.c and fileio.c for negprot and read/write/seek
handling respectively.
(This used to be commit b3d7014643ec9f2eef6e6f598f5b9db1fe2f930d)
|
|
very large. files.c now promotes a files_struct to the top of the list
if it is used when it is more than 10 elements from the top.
also moved common linked list code for the 5 sets of linked lists that
I've created over the past few days into dlinklist.h (I've explained
to Chris why I didn't use the ubiqx code)
(This used to be commit 1eb9ae2996b5a243a147f485e7e353d54f820852)
|
|
to a linked list with bitmap format.
(This used to be commit b7aaab1b6b2d2f72b2bb7c11f5c7bf081a6093d9)
|
|
the chain pointer is now stored as a static and is set whenever a
handle is created or extracted. This also makes the code less error
prone.
(This used to be commit 068a862982bea726e8d7b1b4065d510b9840a272)
|
|
removed most cases where a pnum is used and substituted a pipes_struct*.
in files.c I added a offset of 0x1000 to all file handles on the
wire. This makes it much less likely that bad parsing will give us the
wrong field.
(This used to be commit 8bc2627ff28d340db65bfa017daca2dc291d5ef7)
|