Michael Adam [Fri, 20 Jul 2007 14:23:12 +0000 (14:23 +0000)]
r23977: Im prove the pwrite-patch to tdb_expand_file of r23972:
* prevent infinite loops due to 0 bytes written:
try once more. if we still get 0 as return,
set errno to ENOSPC and return -1 (error)
* replace int by correct types (ssize_t and size_t).
* print a warning log message in case "written < requested to write"
usually this means, that the next call to pwrite will fail
with return value -1 and set errno accordingly.
Note that the former error condition "written != requested to write"
is not a correct error condition of write/pwrite. If this is due
to an error, a subsequent call to (p)write will reveal the cause
(typically "no space left on device" - ENOSPC).
Michael Adam [Thu, 19 Jul 2007 13:46:26 +0000 (13:46 +0000)]
r23972: Fix a bug in pwrite error detection in tdb_expand_file():
The proper error condition is (ret == -1) instead of
(ret != number_of_byte_told_to_write).
Michael Adam [Wed, 18 Jul 2007 11:43:50 +0000 (11:43 +0000)]
r23952: Streamline and improve the logic of tdb_validate_and backup:
- call tdb_validate on the given tdb.
- if validation is successful, create a backup
return 0 (success) even if the backup fails.
- if validation fails:
- move tdb to name.corrupt (don't exit if this fails)
- look for a valid backup
- if a valid backup is found, restore it, else return -1 (failure)
if restoring succeeds, return 0 (success), else -1 (failure)
Summing up:
If 0 is returned, there is a valid tdb at the given location:
either the original one ore one restrored from a backup.
If -1 is returned, there is no valid tdb at the given location:
Either there is no file at all, or the original file is still
in place (if moving it away failed).
Jeremy Allison [Wed, 18 Jul 2007 01:27:03 +0000 (01:27 +0000)]
r23942: Fix issue found by Shlomi Yaakobovich <Shlomi@exanet.com> where
invalid names sent as a resume name were incorrectly mapped into
. and .. Ensure they really *are . and ..
Jeremy.
Jeremy Allison [Tue, 17 Jul 2007 18:48:39 +0000 (18:48 +0000)]
r23935: We were lying to the client in the case of POSIX_UNLINK
if a Windows client had the file open. We were setting
delete on close and returning "ok". The POSIX client then
believed the file was gone (and it wasn't). Fix this to
return SHARING_VIOLATION if there is an existing NTcreateX
open on the file and someone calls POSIX_UNLINK. Still one
more Cthon test to fix but getting closer now. Should
be in 3.0.25c also.
Jeremy.
Michael Adam [Tue, 17 Jul 2007 13:06:29 +0000 (13:06 +0000)]
r23932: Fill extended status with information in case the validation traverse
functions did not do so but returned an error. (This is the case when
error occurred deeper than at the level of the content checking done by
the per entry validate_fn.)
Michael Adam [Tue, 17 Jul 2007 12:49:22 +0000 (12:49 +0000)]
r23930: Introduce tdb_validate_and_backup:
This is a wrapper around tdb_validate, that does backup handling:
* if the given tdb is valid, a backup is created (name.bak)
* if the tdb is invalid, if a valid bakup is found (validated
with the same validation function) under the name "name.bak"
the orignal tdb is moved to name.corrupt and the backup
is restored.
For the backup handling, a variant of the backup_tdb function
from lib/tdb/tools/tdbbackup.c is included in lib/util_tdb.c.
The copy function for the traverse action eliminates the need
to maintain a global success state by using a struct wrapping
the target tdb and a success flag as the private data.
Jeremy Allison [Tue, 17 Jul 2007 05:55:10 +0000 (05:55 +0000)]
r23913: Revert back to Volker's original logic to fix the
RAW-SFILEINFO-RENAME until I can figure out what
is different from the way CIFSFS drives this in
the cthon tests and the way smbtorture drives it.
Jeremy.
Jeremy Allison [Tue, 17 Jul 2007 04:47:36 +0000 (04:47 +0000)]
r23911: Revert r23910 to try and fix the build farm. I
need to look at this more closely tomorrow.
Stevef's cthon tests definately show we're not
matching Windows behaviour (as his tests pass
against Windows but not SAMBA_3_2) but this isn't
the fix.
Jeremy.
Jeremy Allison [Tue, 17 Jul 2007 02:17:23 +0000 (02:17 +0000)]
r23910: We used to deny renames on the
source open for non-delete open.
Turns out this is not the case.
VL please test but this matches
Windows behaviour. (I'll add a
torture test tomorrow).
Jeremy.
Jeremy Allison [Tue, 17 Jul 2007 00:50:48 +0000 (00:50 +0000)]
r23908: Fix bug with interaction of optimization with
POSIX locking. We can't do lock counts with POSIX,
so stop counting if we get a POSIX lock request.
Jeremy.
Jeremy Allison [Fri, 13 Jul 2007 01:22:09 +0000 (01:22 +0000)]
r23858: Added srvstr_pull_buf_talloc() and srvstr_pull_talloc()
calls and converted reply_tcon and reply_tconX to use
them - to show the boilerplate usage (valgrind tested).
In conjunction with Volker's srvstr_get_path_talloc()
work this should allow us to start eliminating all
pstrings/fstrings out of the main path processing
code.
I'll watch the build farm tonight...
Jeremy.
Jeremy Allison [Wed, 11 Jul 2007 23:40:14 +0000 (23:40 +0000)]
r23845: Second part of the fix for #4777. Looks like on AIX opendir
returns an errno of ELOOP for a symlink of msdfs:server\path\to\link.
Cope with this by mapping to a known error NT_STATUS_OBJECT_PATH_NOT_FOUND
that we know dfs_path_lookup should ignore.
Jeremy.
Jeremy Allison [Wed, 11 Jul 2007 21:01:06 +0000 (21:01 +0000)]
r23843: Fix bug #4777, reported by Bill Marshall <bmarsh@us.ibm.com>.
Doing a DFS traverse through a deep link could fail (not using
explorer).
Jeremy.
r23839: Try to get the attribute name from schema GUIDs or the display name from
extended rights GUID from ad while dumping the security descriptors's aces.
This would perform much better with a guid cache, but for the rare cases where
it is used
net ads search cn=mymachine ntSecurityDescriptor -U user%pass