Age | Commit message (Collapse) | Author | Files | Lines |
|
This correctly initialises the event backend, and checks for errors
(thanks to Metze for suggesting this)
|
|
When a samba server process dies hard, it has no chance to clean up its entries
in locking.tdb, brlock.tdb, connections.tdb and sessionid.tdb.
For locking.tdb and brlock.tdb Samba is robust by checking every time we read
an entry from the database if the corresponding process still exists. If it
does not exist anymore, the entry is deleted. This is not 100% failsafe though:
On systems with a limited PID space there is a non-zero chance that between the
smbd's death and the fresh access, the PID is recycled by another long-running
process. This renders all files that had been locked by the killed smbd
potentially unusable until the new process also dies.
This patch is supposed to fix the problem the following way: Every process ID
in every database is augmented by a random 64-bit number that is stored in a
serverid.tdb. Whenever we need to check if a process still exists we know its
PID and the 64-bit number. We look up the PID in serverid.tdb and compare the
64-bit number. If it's the same, the process still is a valid smbd holding the
lock. If it is different, a new smbd has taken over.
I believe this is safe against an smbd that has died hard and the PID has been
taken over by a non-samba process. This process would not have registered
itself with a fresh 64-bit number in serverid.tdb, so the old one still exists
in serverid.tdb. We protect against this case by the parent smbd taking care of
deregistering PIDs from serverid.tdb and the fact that serverid.tdb is
CLEAR_IF_FIRST.
CLEAR_IF_FIRST does not work in a cluster, so the automatic cleanup does not
work when all smbds are restarted. For this, "net serverid wipe" has to be run
before smbd starts up. As a convenience, "net serverid wipedbs" also cleans up
sessionid.tdb and connections.tdb.
While there, this also cleans up overloading connections.tdb with all the
process entries just for messaging_send_all().
Volker
|
|
|
|
|
|
|
|
|
|
look at the mtime
|
|
|
|
|
|
Step 0 to restore it as a per-share paramter
|
|
This reverts commit e23d8a3d1f558a7e98ef2afd71e1d15c5b3a71bc.
|
|
explicit"
This reverts commit 1e22899d268ae5a089f941a204413c07ee64fc78.
|
|
This reverts commit f7b4151a64d8c6851e62255a7139fd00a5fc63a3.
|
|
This reverts commit c85a4c9ba4a7de65a7850f6f9708df66bd24deea.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jeremy.
|
|
Guenther
|
|
Fix set_namearray to allow for strings that don't end in a slash. Also
remove unnecessary strdup()s.
Signed-off-by: Tim Prouty <tprouty@samba.org>
|
|
pid_t correctly
|
|
Actually I moved split_ntfs_stream_name into torture.c which is the one
consumer of it. This could probably be changed at some point.
|
|
metze
|
|
There are error paths in S3 where va_end() is not properly called after
va_start() or va_copy() have been called.
These issues were noted while performing an inspection for S4 bug #6129. Thanks
to Erik Hovland <erik@hovland.org> for the original bug report.
|
|
Guenther
|
|
When we run out of file descriptors for some reason, every new
connection forks a child that immediately panics causing smbd to
coredump. This seems unnecessarily harsh; with this code change we
now catch that error and merely log a message about it and exit
without the core dump.
Signed-off-by: Tim Prouty <tprouty@samba.org>
|
|
This patch introduces
struct stat_ex {
dev_t st_ex_dev;
ino_t st_ex_ino;
mode_t st_ex_mode;
nlink_t st_ex_nlink;
uid_t st_ex_uid;
gid_t st_ex_gid;
dev_t st_ex_rdev;
off_t st_ex_size;
struct timespec st_ex_atime;
struct timespec st_ex_mtime;
struct timespec st_ex_ctime;
struct timespec st_ex_btime; /* birthtime */
blksize_t st_ex_blksize;
blkcnt_t st_ex_blocks;
};
typedef struct stat_ex SMB_STRUCT_STAT;
It is really large because due to the friendly libc headers playing macro
tricks with fields like st_ino, so I renamed them to st_ex_xxx.
Why this change? To support birthtime, we already have quite a few #ifdef's at
places where it does not really belong. With a stat struct that we control, we
can consolidate the nanosecond timestamps and the birthtime deep in the VFS
stat calls.
At this moment it is triggered by a request to support the birthtime field for
GPFS. GPFS does not extend the system level struct stat, but instead has a
separate call that gets us the additional information beyond posix. Without
being able to do that within the VFS stat calls, that support would have to be
scattered around the main smbd code.
It will very likely break all the onefs modules, but I think the changes will
be reasonably easy to do.
|
|
the system one is broken.
|
|
Guenther
|
|
callers pass in a struct user_auth_info * instead. This commit causes
smbc_set_credentials() to print out a message telling callers to use
smbc_set_credentials_with_fallback() instead, as smbc_set_credentials()
has a broken API (no SMBCCTX * pointer). No more global variables used
in the connection manager API for client dfs calls.
Jeremy.
|
|
Jeremy.
|
|
This reverts 193be432. The MADVISE_PROTECT is inherited by all child
processes and cannot be unset. The intention of the original patch was
to protect the parent process, but allow children to be killed in low
memory. Since this isn't possible with the current API, reverting the
whole feature.
|
|
|
|
* move to reinit_after_fork() to protect all Samba daemons
* only protect parent processes
|
|
|
|
|
|
|
|
|
|
This allows module implementors to customize what allocation size is
returned to the client.
|
|
context
Because messaging_reinit() may add events to the event context, which will
removed by event_context_reinit().
metze
|
|
binaries that don't have
an event context or a msg context. Fixes crash bug in swat.
Jeremy.
|
|
If they are not explicitely set in either place both will default to LOCKDIR.
Signed-off-by: Michael Adam <obnox@samba.org>
|
|
Signed-off-by: Stefan Metzmacher <metze@samba.org>
|
|
|
|
|
|
|