The branch, v4-1-stable has been updated via 144791e VERSION: Disable git snapshots for the 4.1.5 release. via a738491 WHATSNEW: Add release notes for Samba 4.1.5. via 8c2ee1f s3:smb2_notify: fix use after free on long living notify requests via dd83f1d s3: modules: streaminfo: As we have no VFS function SMB_VFS_LLISTXATTR we can't cope with a symlink when lp_posix_pathnames() is true. via 6763283 s3: vfs_dirsort module. via 9cb8ae1 s3: vfs_dirsort module. via 4ce9501 smbd: Fix an ancient oplock bug via b5253bf vfs_btrfs: pass-through copy-chunk(len=0) requests via 1271434 smbd/smb2_ioctl: fail zero length copy chunk requests via 3a3d027 torture: add zero length FSCTL_SRV_COPYCHUNK test via 6265959 kdc: Add belts-and-braces check that we fail if the hdb version changes via 593ce2a Support for Heimdal's unified krb5 and hdb plugin system. via 68dc374 Cope with first element in hdb_method having a different name in different heimdal versions. via 3f09c5c smbd: Fix memory overwrites via dc58296 s3-winbind: Improve performance of wb_fill_pwent_sid2uid_done(). via e31075d Stop use after free via 28ddd77 s3: smbpasswd - fix crashes on invalid input. via 13e65fa s3:dir - We now pass the previously spinning directory tests on ext4. via da502c0 s3:dir - Introduce a 64-bit directory offset <-> 32 bit wire offset map using memcache. via 3f28508 s3:dir - Add a new memcache type (non-talloc) - SMB1_SEARCH_OFFSET_MAP. via d8bed98 s3:dir - Map wire offsets to native directory cookies. via 45e65e1 s3:dir - Cope with fixed mapping of 'special' values. via 23596ff s3: dir - Introduce 32-bit wire versions of the 'special' values. via d9e8ac1 s3:dir - Introduce a function to map a directory cookie to a 32-bit wire cookie. via 9b6d61c s3:dir - In the old SMB1 search code, rename offset to wire_offset to distinguish between wire and native offsets. via f4c8846 vfs/glusterfs: in case atime is not passed, set it to the current atime via d49d8b6 s3-passdb: Fix string duplication to pointers. via bf88959 wbinfo: Fix a memory leak in wbinfo_ping_dc(). via 07f1312 s3-libads: Fix memory leaks in ads_build_path(). via a498c8a lib: Fix strict-aliasing warning in md5 code. via a91d000 shadow_copy2: add a comment explaining why we don't talloc_zero_array(). via cc773c5 shadow_copy2: revert expensive and unnecessary zero-initialization via e8bc1ac docs: Fix typos in vfs_shadow_copy2.8.xml. via 4fe0bad docs: update the manpage of vfs_shadow_copy2 via 33fb6c1 s3:modules:shadow_copy2: remove redundant documentation comment block via 572ca24 s3:modules:shadow_copy2: improve headline comment via 44db7d8 s3:module:shadow_copy2: add my (C) via db8ea0a shadow_copy2: use stored mount_point instead of recalculating. via 5e9daae shadow_copy2: improve debug in shadow_copy2_convert() in snapdirseverywhere mode via c775897 shadow_copy2: fix shadow_copy2_convert() in the classical case. via 3672c20 shadow_copy2: add some blank lines for visual separation to shadow_copy2_convert() via 9f269c9 shadow_copy2: initialize "converted" string to null in shadow_copy2_convert() via 285e1e4 shadow_copy2: fix shadow_copy2_strip_snapshot() in the classical case via 790fcac shadow_copy2: add some debug to shadow_copy2_strip_snapshot() via 9607710 shadow_copy2: add comments explaining decisions in shadow_copy2_strip_snapshot() via 9af2451 shadow_copy2: introduce shadow_copy2_snapshot_path() via 042b0aa shadow_copy2: factor shadow_copy2_posix_gmt_string() out of shadow_copy2_insert_string() via 15170c0 shadow_copy2: shadow_copy2_insert_string(): do not prepend a "/" in absolute mode via b6a6eb5 shadow_copy2: make shadow_copy2_find_snapdir() return const char * via f61106d shadow_copy2: in the classical case, use configured path in shadow_copy2_find_snapdir() via 47a0a04 shadow_copy2: implement disk_free via cfa7632 shadow_copy2: log resulting config at the end of shadow_copy2_connect() via 1b1d020 shadow_copy2: add snapshot_basepath to the config. via fa6b219 shadow_copy2: add rel_connectpath to config. via 9b376b7 shadow_copy2: introduce "shadow:mountpoint" option via 52c70fb shadow_copy2: re-add the basedir option. via 266a8de shadow_copy2: disable "snapdir:crossmountpoints" if the snapdir is absolute. via e86972d shadow_copy2: introduce the bool "snapdir_absolute" in the config. via 5037f83 shadow_copy2: introduce config struct and function shadow_copy2_connect() via 0985cce shadow_copy2: add comment explaining the SMB level GMT format pattern via cd96d92 shadow_copy2: add comment block explaining shadow_copy2_convert() via b578f7c shadow_copy2: add comment block explaining shadow_copy2_insert_string() via 259b8de shadow_copy2: add comment block explaining shadow_copy2_find_snapdir() via f8c613b shadow_copy2: add header comment explaining have_snapdir() via 09242f8 shadow_copy2: add comment header describing shadow_copy2_strip_snapshot() via ee34996 shadow_copy2: break overly long lines in shadow_copy2_snapshot_to_gmt() via 9f00bda s3: winbindd: Move calling setup_domain_child() into add_trusted_domain(). via 187d2ef s3: winbindd: Move the logic of whether to set 'domain->primary' into add_trusted_domain(). via ca56a5d VERSION: Bump version number up to 4.1.5... from b6d7cae VERSION: Disable git snapshots for the 4.1.4 release.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-1-stable - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- Summary of changes: VERSION | 2 +- WHATSNEW.txt | 103 +++++- docs-xml/manpages/vfs_shadow_copy2.8.xml | 290 ++++++++++-- lib/crypto/md5.c | 9 +- nsswitch/wbinfo.c | 1 + selftest/skip | 2 - selftest/target/Samba3.pm | 4 + source3/include/memcache.h | 3 +- source3/include/smb.h | 10 +- source3/libads/ads_struct.c | 2 + source3/modules/vfs_btrfs.c | 22 +- source3/modules/vfs_dirsort.c | 119 +++++- source3/modules/vfs_glusterfs.c | 26 +- source3/modules/vfs_shadow_copy2.c | 723 ++++++++++++++++++++++++------ source3/modules/vfs_streams_depot.c | 13 +- source3/modules/vfs_streams_xattr.c | 13 +- source3/passdb/py_passdb.c | 14 +- source3/selftest/tests.py | 5 + source3/smbd/dir.c | 140 ++++++- source3/smbd/oplock.c | 2 + source3/smbd/smb2_ioctl_network_fs.c | 21 +- source3/smbd/smb2_notify.c | 55 +++ source3/utils/net.c | 5 + source3/utils/ntlm_auth.c | 6 +- source3/utils/passwd_util.c | 14 +- source3/utils/smbpasswd.c | 14 + source3/winbindd/wb_fill_pwent.c | 2 +- source3/winbindd/winbindd_util.c | 60 +-- source4/kdc/hdb-samba4-plugin.c | 24 +- source4/kdc/hdb-samba4.c | 5 + source4/torture/smb2/ioctl.c | 64 +++ 31 files changed, 1506 insertions(+), 267 deletions(-) Changeset truncated at 500 lines: diff --git a/VERSION b/VERSION index bfb23b8..6f45252 100644 --- a/VERSION +++ b/VERSION @@ -25,7 +25,7 @@ ######################################################## SAMBA_VERSION_MAJOR=4 SAMBA_VERSION_MINOR=1 -SAMBA_VERSION_RELEASE=4 +SAMBA_VERSION_RELEASE=5 ######################################################## # If a official release has a serious bug # diff --git a/WHATSNEW.txt b/WHATSNEW.txt index b864e8a..977c85a 100644 --- a/WHATSNEW.txt +++ b/WHATSNEW.txt @@ -1,4 +1,103 @@ ============================= + Release Notes for Samba 4.1.5 + February 21, 2014 + ============================= + + +This is the latest stable release of Samba 4.1. + +Major enhancements in Samba 4.1.5 include: + +o Fix 100% CPU utilization in winbindd when trying to free memory in + winbindd_reinit_after_fork (bug #10358). +o smbd: Fix memory overwrites (bug #10415). + + +Changes since 4.1.4: +-------------------- + +o Michael Adam <ob...@samba.org> + * BUG 10259: Make shadow_copy2 module working with Windows 7. + + +o Jeremy Allison <j...@samba.org> + * BUG 2662: Make revamped directory handling code 64bit clean. + * BUG 10320: s3: smbpasswd: Fix crashes on invalid input. + * BUG 10358: Fix 100% CPU utilization in winbindd when trying to free + memory in winbindd_reinit_after_fork. + * BUG 10406: s3: vfs_dirsort module: Allow dirsort to work when multiple + simultaneous directories are open. + * BUG 10429: s3: modules: streaminfo: As we have no VFS function + SMB_VFS_LLISTXATTR we can't cope with a symlink when lp_posix_pathnames() + is true. + + +o Alistair Leslie-Hughes <leslie_alist...@hotmail.com> + * BUG 10087: ntlm_auth sometimes returns the wrong username to + mod_ntlm_auth_winbind. + + +o Andrew Bartlett <abart...@samba.org> + * BUG 10418: Fix INTERNAL ERROR: Signal 11 in the kdc pid. + + +o Jeffrey Clark <d...@zaplabs.com> + * BUG 10418: Add support for Heimdal's unified krb5 and hdb plugin system. + + +o Niels de Vos <nde...@redhat.com> + * BUG 10384: vfs/glusterfs: In case atime is not passed, set it to the + current atime. + + +o David Disseldorp <dd...@samba.org> + * BUG 10424: vfs_btrfs: Fix incorrect zero length server-side copy request + handling. + + +o Volker Lendecke <v...@samba.org> + * BUG 2191: s3-winbind: Improve performance of wb_fill_pwent_sid2uid_done(). + * BUG 10415: smbd: Fix memory overwrites. + * BUG 10436: smbd: Fix an ancient oplock bug. + + +o Stefan Metzmacher <me...@samba.org> + * BUG 10442: Fix crash bug in smb2_notify code. + + +o Andreas Schneider <a...@samba.org> + * BUG 10367: Fix several memory leaks. + + +o Jelmer Vernooij <jel...@samba.org> + * BUG 10418: Cope with first element in hdb_method having a different name + in different heimdal versions. + + +####################################### +Reporting bugs & Development Discussion +####################################### + +Please discuss this release on the samba-technical mailing list or by +joining the #samba-technical IRC channel on irc.freenode.net. + +If you do report problems then please try to send high quality +feedback. If you don't provide vital information to help us track down +the problem then you will probably be ignored. All bug reports should +be filed under the Samba 4.1 product in the project's Bugzilla +database (https://bugzilla.samba.org/). + + +====================================================================== +== Our Code, Our Bugs, Our Responsibility. +== The Samba Team +====================================================================== + + +Release notes for older releases follow: +---------------------------------------- + + ============================= Release Notes for Samba 4.1.4 January 10, 2014 ============================= @@ -97,8 +196,8 @@ database (https://bugzilla.samba.org/). ====================================================================== -Release notes for older releases follow: ----------------------------------------- +---------------------------------------------------------------------- + ============================= Release Notes for Samba 4.1.3 diff --git a/docs-xml/manpages/vfs_shadow_copy2.8.xml b/docs-xml/manpages/vfs_shadow_copy2.8.xml index b313416..1cb9aba 100644 --- a/docs-xml/manpages/vfs_shadow_copy2.8.xml +++ b/docs-xml/manpages/vfs_shadow_copy2.8.xml @@ -13,7 +13,8 @@ <refnamediv> <refname>vfs_shadow_copy2</refname> - <refpurpose>Expose snapshots to Windows clients as shadow copies.</refpurpose> + <refpurpose>Expose snapshots to Windows clients as shadow copies. + </refpurpose> </refnamediv> <refsynopsisdiv> @@ -29,21 +30,57 @@ <citerefentry><refentrytitle>samba</refentrytitle> <manvolnum>7</manvolnum></citerefentry> suite.</para> - <para>The <command>vfs_shadow_copy2</command> VFS module functionality - that is similar to Microsoft Shadow Copy services. When setup properly, + <para> + The <command>vfs_shadow_copy2</command> VFS module offers a + functionality similar to Microsoft Shadow Copy services. + When set up properly, this module allows Microsoft Shadow Copy clients to browse - "shadow copies" on Samba shares. + through file system snapshots as "shadow copies" on Samba shares. </para> - <para>This is a 2nd implementation of a shadow copy module. This - version has the following features:</para> + <para> + This is a second implementation of a shadow copy module + which has the following additional features (compared to the original + <citerefentry><refentrytitle>shadow_copy</refentrytitle> + <manvolnum>8</manvolnum></citerefentry> module): + </para> <orderedlist continuation="restarts" inheritnum="ignore" numeration="arabic"> - <listitem><para>You don't need to populate your shares with symlinks to the - snapshots. This can be very important when you have thousands of - shares, or use [homes].</para></listitem> - <listitem><para>The inode number of the files is altered so it is different - from the original. This allows the 'restore' button to work - without a sharing violation.</para></listitem> + <listitem><para> + There is no need any more to populate your share's root directory + with symlinks to the snapshots if the file system stores the + snapshots elsewhere. + Instead, you can flexibly configure the module where to look for + the file system snapshots. + This can be very important when you have thousands of + shares, or use [homes]. + </para></listitem> + <listitem><para> + Snapshot directories need not be in one fixed central place but + can be located anywhere in the directory tree. This mode helps to + support file systems that offer snapshotting of particular + subtrees, for example the GPFS independent file sets. + </para></listitem> + <listitem><para> + Vanity naming for snapshots: snapshots can be named in any format + compatible with str[fp]time conversions. + </para></listitem> + <listitem><para> + Timestamps can be represented in localtime rather than UTC. + </para></listitem> + <listitem><para> + The inode number of the files can optionally be altered to be + different from the original. This fixes the 'restore' button + in the Windows GUI to work without a sharing violation when + serving from file systems, like GPFS, that return the same + device and inode number for the snapshot file and the original. + </para></listitem> + <listitem><para> + Shadow copy results are by default sorted before being sent to the + client. This is beneficial for filesystems that don't read + directories alphabetically (the default unix). Sort ordering can be + configured and sorting can be turned off completely if the file + system sorts its directory listing. + </para></listitem> </orderedlist> <para>This module is stackable.</para> @@ -58,25 +95,32 @@ support for this. </para> - <para>Filesystem snapshots must be mounted on + <para>Filesystem snapshots must be available under specially named directories in order to be recognized by - <command>vfs_shadow_copy2</command>. The snapshot mount points must - be immediate children of a the directory being shared.</para> - - <para>The snapshot naming convention is @GMT-YYYY.MM.DD-hh.mm.ss, - where: + <command>vfs_shadow_copy2</command>. These snapshot directory + is typically a direct subdirectory of the share root's mountpoint + but there are other modes that can be configured with the + parameters described in detail below.</para> + + <para>The snapshot at a given point in time is expected in a + subdirectory of the snapshot directory where the snapshot's + directory is expected to be a formatted version of the + snapshot time. The default format which can be changed + with the <command>shadow:format</command> option + is @GMT-YYYY.MM.DD-hh.mm.ss, where: <itemizedlist> - <listitem><para><command>YYYY</command> is the 4 digit year</para></listitem> - <listitem><para><command>MM</command> is the 2 digit month</para></listitem> - <listitem><para><command>DD</command> is the 2 digit day</para></listitem> - <listitem><para><command>hh</command> is the 2 digit hour</para></listitem> - <listitem><para><command>mm</command> is the 2 digit minute</para></listitem> - <listitem><para><command>ss</command> is the 2 digit second.</para></listitem> - </itemizedlist> + <listitem><para><command>YYYY</command> is the 4 digit year</para></listitem> + <listitem><para><command>MM</command> is the 2 digit month</para></listitem> + <listitem><para><command>DD</command> is the 2 digit day</para></listitem> + <listitem><para><command>hh</command> is the 2 digit hour</para></listitem> + <listitem><para><command>mm</command> is the 2 digit minute</para></listitem> + <listitem><para><command>ss</command> is the 2 digit second.</para></listitem> + </itemizedlist> </para> - <para>The <command>vfs_shadow_copy2</command> snapshot naming convention can be - produced with the following <citerefentry><refentrytitle>date</refentrytitle> + <para>The <command>vfs_shadow_copy2</command> snapshot naming + convention can be produced with the following + <citerefentry><refentrytitle>date</refentrytitle> <manvolnum>1</manvolnum></citerefentry> command: <programlisting> TZ=GMT date +@GMT-%Y.%m.%d-%H.%M.%S @@ -89,11 +133,47 @@ <variablelist> <varlistentry> + <term>shadow:mountpoint = MOUNTPOINT + </term> + <listitem> + <para> + With this parameter, one can specify the mount point + of the filesystem that contains the share path. + Usually this mount point is automatically detected. + But for some constellations, in particular tests, + it can be convenient to be able to specify it. + </para> + <para>Example: shadow:mountpoint = /path/to/filesystem</para> + <para>Default: shadow:mountpoint = NOT SPECIFIED</para> + </listitem> + </varlistentry> + + <varlistentry> <term>shadow:snapdir = SNAPDIR </term> <listitem> - <para>Path to the directory where snapshots are kept. - </para> + <para> + Path to the directory where the file system of + the share keeps its snapshots. + If an absolute path is specified, it is used as-is. + If a relative path is specified, then it is taken + relative to the mount point of the filesystem of + the share root. (See <command>shadow:mountpoint</command>.) + </para> + <para> + Note that <command>shadow:snapdirseverywhere</command> + depends on this parameter and needs a relative path. + Setting an absolute path disables + <command>shadow:snapdirseverywhere</command>. + </para> + <para> + Note that the <command>shadow:crossmountpoints</command> + option also requires a relative snapdir. + Setting an absolute path disables + <command>shadow:crossmountpoints</command>. + </para> + <para>Example: shadow:snapdir = /some/absolute/path</para> + <para>Default: shadow:snapdir = .snapshots</para> </listitem> </varlistentry> @@ -101,21 +181,65 @@ <term>shadow:basedir = BASEDIR </term> <listitem> - <para>Path to the base directory that snapshots are from. - </para> + <para> + The basedir option allows to specify a directory + between the share's mount point and the share root, + relative to which the file system's snapshots are taken. + </para> + <para> + For example, if + <itemizedlist> + <listitem><para> + <command>basedir = mountpoint/rel_basedir</command> + </para></listitem> + <listitem><para> + <command>share_root = basedir/rel_share_root</command> + </para></listitem> + <listitem><para> + <command>snapshot_path = mountpoint/snapdir</command> + </para> + <para> + or + <command>snapshot_path = snapdir</command> + if snapdir is absolute + </para></listitem> + </itemizedlist> + then the snapshot of a + <command>file = mountpoint/rel_basedir/rel_share_root/rel_file</command> + at a time TIME will be found under + <command>snapshot_path/FS_GMT_TOKEN(TIME)/rel_share_root/rel_file</command>, + where FS_GMT_TOKEN(TIME) is the timestamp string belonging + to TIME in the format required by the file system. + (See <command>shadow:format</command>.) + </para> + <para>The default for the basedir is the mount point + of the file system of the share root + (see <command>shadow:mountpoint</command>). + </para> + <para> + Note that the <command>shadow:snapdirseverywhere</command> + and <command>shadow:crossmountpoints</command> + options are incompatible with <command>shadow:basedir</command> + and disable the basedir setting. + </para> </listitem> </varlistentry> <varlistentry> - <term>shadow:sort = asc/desc, or not specified for unsorted (default) + <term>shadow:sort = asc/desc </term> <listitem> - <para>By this parameter one can specify that the shadow - copy directories should be sorted before they are sent to the - client. This can be beneficial as unix filesystems are usually - not listed alphabetically sorted. If enabled, you typically - want to specify descending order. - </para> + <para>By default, this module sorts the shadow copy data + alphabetically before sending it to the client. + With this parameter, one can specify the sort order. + Possible known values are desc (descending, the default) + and asc (ascending). If the file system lists directories + alphabetically sorted, one can turn off sorting in this + module by specifying any other value. + </para> + <para>Example: shadow:sort = asc</para> + <para>Example: shadow:sort = none</para> + <para>Default: shadow:sort = desc</para> </listitem> </varlistentry> @@ -124,9 +248,10 @@ </term> <listitem> <para>This is an optional parameter that indicates whether the - snapshot names are in UTC/GMT or in local time. By default - UTC is expected. + snapshot names are in UTC/GMT or in local time. If it is + disabled then UTC/GMT is expected. </para> + <para>shadow:localtime = no</para> </listitem> </varlistentry> @@ -135,14 +260,28 @@ </term> <listitem> <para>This is an optional parameter that specifies the format - specification for the naming of snapshots. The format must - be compatible with the conversion specifications recognized - by str[fp]time. The default value is "@GMT-%Y.%m.%d-%H.%M.%S". + specification for the naming of snapshots in the file system. + The format must be compatible with the conversion + specifications recognized by str[fp]time. </para> + <para>Default: shadow:format = "@GMT-%Y.%m.%d-%H.%M.%S"</para> </listitem> </varlistentry> <varlistentry> + <term>shadow:sscanf = yes/no</term> + <listitem> + <para> + This paramter can be used to specify that the time in + format string is given as an unsigned long integer (%lu) + rather than a time strptime() can parse. + The result must be a unix time_t time. + </para> + <para>Default: shadow:sscanf = no</para> + </listitem> + </varlistentry> + + <varlistentry> <term>shadow:fixinodes = yes/no </term> <listitem> @@ -155,23 +294,78 @@ this option then the 'restore' button in the shadow copy UI will fail with a sharing violation. </para> + <para>Default: shadow:fixinodes = no</para> </listitem> </varlistentry> + <varlistentry> <term>shadow:snapdirseverywhere = yes/no </term> <listitem> - <para>If you enable <command moreinfo="none"> - shadow:snapdirseverywhere </command> then this module will look - out for snapshot directories in the current and all parent - directories of the current working directory. + <para> + If you enable + <command moreinfo="none">shadow:snapdirseverywhere </command> + then this module will look + out for snapshot directories in the current working directory + and all parent directories, stopping at the mount point + by default. + But see <command>shadow:crossmountpoints</command> how to change + that behaviour. + </para> + <para> An example where this is needed are independent filesets in IBM's GPFS, but other filesystems might support snapshotting only particular subtrees of the filesystem as well. </para> + <para> + Note that <command>shadow:snapdirseverywhere</command> + depends on <command>shadow:snapdir</command> and needs it to be + a relative path. Setting an absolute snapdir path disables + <command>shadow:snapdirseverywhere</command>. + </para> + <para> + Note that this option is incompatible with the + <command>shadow:basedir</command> option and removes the + <command>shadow:basedir</command> setting by itself. + </para> + <para>Example: shadow:snapdirseverywhere = yes</para> + <para>Default: shadow:snapdirseverywhere = no</para> </listitem> </varlistentry> + <varlistentry> + <term>shadow:crossmountpoints = yes/no + </term> + <listitem> + <para> + This option is effective in the case of + <command>shadow:snapdirseverywhere = yes</command>. + Setting this option makes the module not stop at the + first mount point encountered when looking for snapdirs, + but lets it search potentially all through the path + instead. + </para> + <para> + An example where this is needed are independent filesets in + IBM's GPFS, but other filesystems might support snapshotting + only particular subtrees of the filesystem as well. + </para> + <para> + Note that <command>shadow:snapdirseverywhere</command> + depends on <command>shadow:snapdir</command> and needs it to be -- Samba Shared Repository