Deleted Added
full compact
primary.c (225786) primary.c (225830)
1/*-
2 * Copyright (c) 2009 The FreeBSD Foundation
3 * Copyright (c) 2010-2011 Pawel Jakub Dawidek <pawel@dawidek.net>
4 * All rights reserved.
5 *
6 * This software was developed by Pawel Jakub Dawidek under sponsorship from
7 * the FreeBSD Foundation.
8 *

--- 15 unchanged lines hidden (view full) ---

24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 */
30
31#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2009 The FreeBSD Foundation
3 * Copyright (c) 2010-2011 Pawel Jakub Dawidek <pawel@dawidek.net>
4 * All rights reserved.
5 *
6 * This software was developed by Pawel Jakub Dawidek under sponsorship from
7 * the FreeBSD Foundation.
8 *

--- 15 unchanged lines hidden (view full) ---

24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 */
30
31#include <sys/cdefs.h>
32__FBSDID("$FreeBSD: head/sbin/hastd/primary.c 225786 2011-09-27 08:26:09Z pjd $");
32__FBSDID("$FreeBSD: head/sbin/hastd/primary.c 225830 2011-09-28 13:08:51Z pjd $");
33
34#include <sys/types.h>
35#include <sys/time.h>
36#include <sys/bio.h>
37#include <sys/disk.h>
38#include <sys/refcount.h>
39#include <sys/stat.h>
40

--- 250 unchanged lines hidden (view full) ---

291 buf = activemap_bitmap(res->hr_amp, &size);
292 PJDLOG_ASSERT(buf != NULL);
293 PJDLOG_ASSERT((size % res->hr_local_sectorsize) == 0);
294 if (pwrite(res->hr_localfd, buf, size, METADATA_SIZE) !=
295 (ssize_t)size) {
296 pjdlog_errno(LOG_ERR, "Unable to flush activemap to disk");
297 return (-1);
298 }
33
34#include <sys/types.h>
35#include <sys/time.h>
36#include <sys/bio.h>
37#include <sys/disk.h>
38#include <sys/refcount.h>
39#include <sys/stat.h>
40

--- 250 unchanged lines hidden (view full) ---

291 buf = activemap_bitmap(res->hr_amp, &size);
292 PJDLOG_ASSERT(buf != NULL);
293 PJDLOG_ASSERT((size % res->hr_local_sectorsize) == 0);
294 if (pwrite(res->hr_localfd, buf, size, METADATA_SIZE) !=
295 (ssize_t)size) {
296 pjdlog_errno(LOG_ERR, "Unable to flush activemap to disk");
297 return (-1);
298 }
299 if (res->hr_metaflush == 1 && g_flush(res->hr_localfd) == -1) {
300 if (errno == EOPNOTSUPP) {
301 pjdlog_warning("The %s provider doesn't support flushing write cache. Disabling it.",
302 res->hr_localpath);
303 res->hr_metaflush = 0;
304 } else {
305 pjdlog_errno(LOG_ERR,
306 "Unable to flush disk cache on activemap update");
307 return (-1);
308 }
309 }
299 return (0);
300}
301
302static bool
303real_remote(const struct hast_resource *res)
304{
305
306 return (strcmp(res->hr_remoteaddr, "none") != 0);

--- 1687 unchanged lines hidden (view full) ---

1994 PJDLOG_ASSERT(gres == res);
1995 nv_assert(nv, "remoteaddr");
1996 nv_assert(nv, "sourceaddr");
1997 nv_assert(nv, "replication");
1998 nv_assert(nv, "checksum");
1999 nv_assert(nv, "compression");
2000 nv_assert(nv, "timeout");
2001 nv_assert(nv, "exec");
310 return (0);
311}
312
313static bool
314real_remote(const struct hast_resource *res)
315{
316
317 return (strcmp(res->hr_remoteaddr, "none") != 0);

--- 1687 unchanged lines hidden (view full) ---

2005 PJDLOG_ASSERT(gres == res);
2006 nv_assert(nv, "remoteaddr");
2007 nv_assert(nv, "sourceaddr");
2008 nv_assert(nv, "replication");
2009 nv_assert(nv, "checksum");
2010 nv_assert(nv, "compression");
2011 nv_assert(nv, "timeout");
2012 nv_assert(nv, "exec");
2013 nv_assert(nv, "metaflush");
2002
2003 ncomps = HAST_NCOMPONENTS;
2004
2005#define MODIFIED_REMOTEADDR 0x01
2006#define MODIFIED_SOURCEADDR 0x02
2007#define MODIFIED_REPLICATION 0x04
2008#define MODIFIED_CHECKSUM 0x08
2009#define MODIFIED_COMPRESSION 0x10
2010#define MODIFIED_TIMEOUT 0x20
2011#define MODIFIED_EXEC 0x40
2014
2015 ncomps = HAST_NCOMPONENTS;
2016
2017#define MODIFIED_REMOTEADDR 0x01
2018#define MODIFIED_SOURCEADDR 0x02
2019#define MODIFIED_REPLICATION 0x04
2020#define MODIFIED_CHECKSUM 0x08
2021#define MODIFIED_COMPRESSION 0x10
2022#define MODIFIED_TIMEOUT 0x20
2023#define MODIFIED_EXEC 0x40
2024#define MODIFIED_METAFLUSH 0x80
2012 modified = 0;
2013
2014 vstr = nv_get_string(nv, "remoteaddr");
2015 if (strcmp(gres->hr_remoteaddr, vstr) != 0) {
2016 /*
2017 * Don't copy res->hr_remoteaddr to gres just yet.
2018 * We want remote_close() to log disconnect from the old
2019 * addresses, not from the new ones.

--- 25 unchanged lines hidden (view full) ---

2045 gres->hr_timeout = vint;
2046 modified |= MODIFIED_TIMEOUT;
2047 }
2048 vstr = nv_get_string(nv, "exec");
2049 if (strcmp(gres->hr_exec, vstr) != 0) {
2050 strlcpy(gres->hr_exec, vstr, sizeof(gres->hr_exec));
2051 modified |= MODIFIED_EXEC;
2052 }
2025 modified = 0;
2026
2027 vstr = nv_get_string(nv, "remoteaddr");
2028 if (strcmp(gres->hr_remoteaddr, vstr) != 0) {
2029 /*
2030 * Don't copy res->hr_remoteaddr to gres just yet.
2031 * We want remote_close() to log disconnect from the old
2032 * addresses, not from the new ones.

--- 25 unchanged lines hidden (view full) ---

2058 gres->hr_timeout = vint;
2059 modified |= MODIFIED_TIMEOUT;
2060 }
2061 vstr = nv_get_string(nv, "exec");
2062 if (strcmp(gres->hr_exec, vstr) != 0) {
2063 strlcpy(gres->hr_exec, vstr, sizeof(gres->hr_exec));
2064 modified |= MODIFIED_EXEC;
2065 }
2066 vint = nv_get_int32(nv, "metaflush");
2067 if (gres->hr_metaflush != vint) {
2068 gres->hr_metaflush = vint;
2069 modified |= MODIFIED_METAFLUSH;
2070 }
2053
2054 /*
2055 * Change timeout for connected sockets.
2056 * Don't bother if we need to reconnect.
2057 */
2058 if ((modified & MODIFIED_TIMEOUT) != 0 &&
2059 (modified & (MODIFIED_REMOTEADDR | MODIFIED_SOURCEADDR |
2060 MODIFIED_REPLICATION)) == 0) {

--- 33 unchanged lines hidden (view full) ---

2094 }
2095#undef MODIFIED_REMOTEADDR
2096#undef MODIFIED_SOURCEADDR
2097#undef MODIFIED_REPLICATION
2098#undef MODIFIED_CHECKSUM
2099#undef MODIFIED_COMPRESSION
2100#undef MODIFIED_TIMEOUT
2101#undef MODIFIED_EXEC
2071
2072 /*
2073 * Change timeout for connected sockets.
2074 * Don't bother if we need to reconnect.
2075 */
2076 if ((modified & MODIFIED_TIMEOUT) != 0 &&
2077 (modified & (MODIFIED_REMOTEADDR | MODIFIED_SOURCEADDR |
2078 MODIFIED_REPLICATION)) == 0) {

--- 33 unchanged lines hidden (view full) ---

2112 }
2113#undef MODIFIED_REMOTEADDR
2114#undef MODIFIED_SOURCEADDR
2115#undef MODIFIED_REPLICATION
2116#undef MODIFIED_CHECKSUM
2117#undef MODIFIED_COMPRESSION
2118#undef MODIFIED_TIMEOUT
2119#undef MODIFIED_EXEC
2120#undef MODIFIED_METAFLUSH
2102
2103 pjdlog_info("Configuration reloaded successfully.");
2104}
2105
2106static void
2107guard_one(struct hast_resource *res, unsigned int ncomp)
2108{
2109 struct proto_conn *in, *out;

--- 107 unchanged lines hidden ---
2121
2122 pjdlog_info("Configuration reloaded successfully.");
2123}
2124
2125static void
2126guard_one(struct hast_resource *res, unsigned int ncomp)
2127{
2128 struct proto_conn *in, *out;

--- 107 unchanged lines hidden ---