Re: Pump my sched: fewer SCHED_LOCK() & kill p_priority
On Fri, 21 Jun 2019 21:54:18 -0700 Mike Larkin wrote: > On Fri, Jun 21, 2019 at 05:11:26PM -0300, Martin Pieuchot wrote: > > On 06/06/19(Thu) 15:16, Martin Pieuchot wrote: > > > On 02/06/19(Sun) 16:41, Martin Pieuchot wrote: > > > > On 01/06/19(Sat) 18:55, Martin Pieuchot wrote: > > > > > Diff below exists mainly for documentation and test purposes. If > > > > > you're not interested about how to break the scheduler internals in > > > > > pieces, don't read further and go straight to testing! > > > > > > > > > > - First change is to stop calling tsleep(9) at PUSER. That makes > > > > > it clear that all "sleeping priorities" are smaller than PUSER. > > > > > That's important to understand for the diff below. `p_priority' > > > > > is currently a placeholder for the "sleeping priority" and the > > > > > "runnqueue priority". Both fields are separated by this diff. > > > > > > > > > > - When a thread goes to sleep, the priority argument of tsleep(9) is > > > > > now recorded in `p_slpprio'. This argument can be considered as > > > > > part > > > > > of the sleep queue. Its purpose is to place the thread into a > > > > > higher > > > > > runqueue when awoken. > > > > > > > > > > - Currently, for stopped threads, `p_priority' correspond to > > > > > `p_usrpri'. > > > > > So setrunnable() has been untangled to place SSTOP and SSLEEP > > > > > threads > > > > > in the preferred queue without having to use `p_priority'. Note > > > > > that > > > > > `p_usrpri' is still recalculated *after* having called > > > > > setrunqueue(). > > > > > This is currently fine because setrunnable() is called with > > > > > SCHED_LOCK() > > > > > but it will be racy when we'll split it. > > > > > > > > > > - A new field, `p_runprio' has been introduced. It should be > > > > > considered > > > > > as part of the per-CPU runqueues. It indicates where a current > > > > > thread > > > > > is placed. > > > > > > > > > > - `spc_curpriority' is now updated at every context-switch. That > > > > > means > > > > >need_resched() won't be called after comparing an out-of-date > > > > > value. > > > > >At the same time, `p_usrpri' is initialized to the highest possible > > > > >value for idle threads. > > > > > > > > > > - resched_proc() was calling need_resched() in the following > > > > > conditions: > > > > >- If the SONPROC thread has a higher priority that the current > > > > > running thread (itself). > > > > >- Twice in setrunnable() when we know that p_priority <= p_usrpri. > > > > >- If schedcpu() considered that a thread, after updating its prio, > > > > > should preempt the one running on the CPU pointed by `p_cpu'. > > > > > > > > > > The diff below simplify all of that by calling need_resched() when: > > > > >- A thread is inserted in a CPU runqueue at a higher priority than > > > > > the one SONPROC. > > > > >- schedcpu() decides that a thread in SRUN state should preempt the > > > > > one SONPROC. > > > > > > > > > > - `p_estcpu' `p_usrpri' and `p_slptime' which represent the "priority" > > > > > of a thread are now updated while holding a per-thread mutex. As a > > > > > result schedclock() and donice() no longer takes the SCHED_LOCK(), > > > > > and schedcpu() almost never take it. > > > > > > > > > > - With this diff top(1) and ps(1) will report the "real" `p_usrpi' > > > > > value > > > > > when displaying priorities. This is helpful to understand what's > > > > > happening: > > > > > > > > > > load averages: 0.99, 0.56, 0.25 > > > > > two.lab.grenadille.net 23:42:10 > > > > > 70 threads: 68 idle, 2 on processor > > > > > up 0:09 > > > > > CPU0: 0.0% user, 0.0% nice, 51.0% sys, 2.0% spin, 0.0% intr, > > > > > 47.1% idle > > > > > CPU1: 2.0% user, 0.0% nice, 51.0% sys, 3.9% spin, 0.0% intr, > > > > > 43.1% idle > > > > > Memory: Real: 47M/1005M act/tot Free: 2937M Cache: 812M Swap: 0K/4323M > > > > > > > > > > PID TID PRI NICE SIZE RES STATE WAIT TIMECPU > > > > > COMMAND > > > > > 81000 145101 7200K 1664K sleep/1 bored 1:15 36.96% > > > > > softnet > > > > > 47133 244097 730 2984K 4408K sleep/1 netio 1:06 35.06% > > > > > cvs > > > > > 64749 522184 660 176K 148K onproc/1 - 0:55 28.81% > > > > > nfsd > > > > > 21615 602473 12700K 1664K sleep/0 - 7:22 0.00% > > > > > idle0 > > > > > 12413 606242 12700K 1664K sleep/1 - 7:08 0.00% > > > > > idle1 > > > > > 85778 338258 500 4936K 7308K idle select0:10 0.00% > > > > > ssh > > > > > 22771 575513 500 176K 148K sleep/0 nfsd 0:02 0.00% > > > > > nfsd > > > > > > > > > > > > > > > > > > > > - The removal of `p_priority' and the change that makes mi_switch() > > > > > always update `spc_curpriority' might introduce some chang
ospfd: point-to-point on ethernet interfaces
Diff below adds to ospfd point to point support for Ethernet interfaces. I successfully tested this against Junos and FastIron. I first made the key word in the config "point-to-point". But then I changed to "type p2p". The later would allow for "type nbma" or "type p2mp" should we implement these types. On Junos it looks like this: area 0.0.0.0 { interface ge-0/0/1.0 { interface-type p2p; } } On FastIron it's similar to IOS: interface ethernet 1/2/1 ip address 10.10.10.5 255.255.255.0 ip ospf area 0 ip ospf network point-to-point Comments, test reports and OKs are welcome. Remi Index: interface.c === RCS file: /cvs/src/usr.sbin/ospfd/interface.c,v retrieving revision 1.82 diff -u -p -r1.82 interface.c --- interface.c 11 Mar 2018 13:16:49 - 1.82 +++ interface.c 23 Jun 2019 11:27:57 - @@ -190,6 +190,8 @@ if_new(struct kif *kif, struct kif_addr if (kif->flags & IFF_BROADCAST && kif->flags & IFF_MULTICAST) iface->type = IF_TYPE_BROADCAST; + if (iface->p2p) + iface->type = IF_TYPE_POINTOPOINT; if (kif->flags & IFF_LOOPBACK) { iface->type = IF_TYPE_POINTOPOINT; iface->passive = 1; @@ -351,6 +353,9 @@ if_act_start(struct iface *iface) orig_rtr_lsa(iface->area); return (0); } + + if (iface->p2p) + iface->type = IF_TYPE_POINTOPOINT; switch (iface->type) { case IF_TYPE_POINTOPOINT: Index: ospfd.c === RCS file: /cvs/src/usr.sbin/ospfd/ospfd.c,v retrieving revision 1.108 diff -u -p -r1.108 ospfd.c --- ospfd.c 16 May 2019 05:49:22 - 1.108 +++ ospfd.c 23 Jun 2019 21:06:44 - @@ -911,6 +911,22 @@ merge_interfaces(struct area *a, struct if_fsm(i, IF_EVT_UP); } + if (i->p2p != xi->p2p) { + /* re-add interface to enable or disable DR election */ + if (ospfd_process == PROC_OSPF_ENGINE) + if_fsm(i, IF_EVT_DOWN); + else if (ospfd_process == PROC_RDE_ENGINE) + rde_nbr_iface_del(i); + LIST_REMOVE(i, entry); + if_del(i); + LIST_REMOVE(xi, entry); + LIST_INSERT_HEAD(&a->iface_list, xi, entry); + xi->area = a; + if (ospfd_process == PROC_OSPF_ENGINE) + xi->state = IF_STA_NEW; + continue; + } + strlcpy(i->dependon, xi->dependon, sizeof(i->dependon)); i->depend_ok = xi->depend_ok; Index: ospfd.conf.5 === RCS file: /cvs/src/usr.sbin/ospfd/ospfd.conf.5,v retrieving revision 1.57 diff -u -p -r1.57 ospfd.conf.5 --- ospfd.conf.510 Jun 2019 06:07:15 - 1.57 +++ ospfd.conf.523 Jun 2019 22:10:32 - @@ -419,6 +419,9 @@ Router. .It Ic transmit-delay Ar seconds Set the transmit delay. The default value is 1; valid range is 1\-3600 seconds. +.It Ic type p2p +Set the interface type to point to point. +This disables the election of a DR and BDR for the given interface. .El .Sh FILES .Bl -tag -width "/etc/ospfd.conf" -compact Index: ospfd.h === RCS file: /cvs/src/usr.sbin/ospfd/ospfd.h,v retrieving revision 1.104 diff -u -p -r1.104 ospfd.h --- ospfd.h 16 May 2019 05:49:22 - 1.104 +++ ospfd.h 23 Jun 2019 11:28:24 - @@ -363,6 +363,7 @@ struct iface { u_int8_t linkstate; u_int8_t priority; u_int8_t passive; + u_int8_t p2p; }; struct ifaddrchange { Index: parse.y === RCS file: /cvs/src/usr.sbin/ospfd/parse.y,v retrieving revision 1.98 diff -u -p -r1.98 parse.y --- parse.y 7 Jun 2019 04:57:45 - 1.98 +++ parse.y 23 Jun 2019 22:04:22 - @@ -129,7 +129,7 @@ typedef struct { %token AREA INTERFACE ROUTERID FIBPRIORITY FIBUPDATE REDISTRIBUTE RTLABEL %token RDOMAIN RFC1583COMPAT STUB ROUTER SPFDELAY SPFHOLDTIME EXTTAG %token AUTHKEY AUTHTYPE AUTHMD AUTHMDKEYID -%token METRIC PASSIVE +%token METRIC P2P PASSIVE %token HELLOINTERVAL FASTHELLOINTERVAL TRANSMITDELAY %token RETRANSMITINTERVAL ROUTERDEADTIME ROUTERPRIORITY %token SET TYPE @@ -743,6 +743,7 @@ interfaceopts_l : interfaceopts_l interf ; interfaceoptsl : PASSIVE { iface->passive = 1; } + | TYPE P2P { iface->p2p = 1; } | DEMOTE STRING {
gemini lake gpio
New driver for Gemini Lake GPIO controller. Nearly identical to Apollo Lake with few changes. Pad configuration is now 16 bytes starting at offset 0x600. Index: share/man/man4/Makefile === RCS file: /cvs/src/share/man/man4/Makefile,v retrieving revision 1.714 diff -u -p -u -r1.714 Makefile --- share/man/man4/Makefile 17 Jun 2019 18:28:17 - 1.714 +++ share/man/man4/Makefile 22 Jun 2019 08:49:36 - @@ -27,7 +27,8 @@ MAN= aac.4 abcrtc.4 ac97.4 acphy.4 acrtc eso.4 ess.4 et.4 etherip.4 etphy.4 ex.4 exphy.4 exrtc.4 \ fanpwr.4 fd.4 fdc.4 fec.4 fins.4 fintek.4 fms.4 fusbtc.4 fuse.4 \ fxp.4 gdt.4 gentbi.4 gem.4 gif.4 \ - glenv.4 gpio.4 gpiodcf.4 gpioiic.4 gpioow.4 gpr.4 gre.4 gscsio.4 \ + glenv.4 glkgpio.4 gpio.4 gpiodcf.4 gpioiic.4 gpioow.4 \ + gpr.4 gre.4 gscsio.4 \ hds.4 hiclock.4 hidwusb.4 hifn.4 hil.4 hilid.4 hilkbd.4 hilms.4 \ hireset.4 hitemp.4 hme.4 hotplug.4 hsq.4 \ hvn.4 hvs.4 hyperv.4 \ Index: share/man/man4/acpi.4 === RCS file: /cvs/src/share/man/man4/acpi.4,v retrieving revision 1.58 diff -u -p -u -r1.58 acpi.4 --- share/man/man4/acpi.4 17 Jun 2019 18:28:17 - 1.58 +++ share/man/man4/acpi.4 22 Jun 2019 08:49:36 - @@ -100,6 +100,8 @@ AMD cryptographic co-processor Intel Cherry View GPIO controller .It Xr dwiic 4 Synopsys DesignWare I2C controller +.It Xr glkgpio 4 +Intel Gemini Lake GPIO controller .It Xr tpm 4 Trusted Platform Module device .El Index: share/man/man4/glkgpio.4 === RCS file: share/man/man4/glkgpio.4 diff -N share/man/man4/glkgpio.4 --- /dev/null 1 Jan 1970 00:00:00 - +++ share/man/man4/glkgpio.422 Jun 2019 08:49:36 - @@ -0,0 +1,50 @@ +.\"$OpenBSD$ +.\" +.\" Copyright (c) 2019 James Hastings +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +.\" +.Dd $Mdocdate$ +.Dt GLKGPIO 4 +.Os +.Sh NAME +.Nm glkgpio +.Nd Intel Gemini Lake GPIO controller +.Sh SYNOPSIS +.Cd "glkgpio* at acpi?" +.Sh DESCRIPTION +The +.Nm +driver provides support for the GPIO controllers found on Intel's Gemini +Lake SoC. +It does not provide direct device driver entry points but makes its +functions available to +.Xr acpi 4 . +.Sh SEE ALSO +.Xr acpi 4 , +.Xr intro 4 +.Sh HISTORY +The +.Nm +driver first appeared in +.Ox 6.6 . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An James Hastings +based on the +.Xr bytgpio 4 +driver by +.An Mark Kettenis Aq Mt kette...@openbsd.org . Index: sys/arch/amd64/conf/GENERIC === RCS file: /cvs/src/sys/arch/amd64/conf/GENERIC,v retrieving revision 1.474 diff -u -p -u -r1.474 GENERIC --- sys/arch/amd64/conf/GENERIC 17 Jun 2019 18:28:17 - 1.474 +++ sys/arch/amd64/conf/GENERIC 22 Jun 2019 08:49:37 - @@ -64,6 +64,7 @@ aibs* at acpi? aplgpio* at acpi? bytgpio* at acpi? chvgpio* at acpi? +glkgpio* at acpi? sdhc* at acpi? acpicbkbd* at acpi? acpials* at acpi? Index: sys/arch/amd64/conf/RAMDISK_CD === RCS file: /cvs/src/sys/arch/amd64/conf/RAMDISK_CD,v retrieving revision 1.180 diff -u -p -u -r1.180 RAMDISK_CD --- sys/arch/amd64/conf/RAMDISK_CD 17 Jun 2019 18:28:18 - 1.180 +++ sys/arch/amd64/conf/RAMDISK_CD 22 Jun 2019 08:49:37 - @@ -47,6 +47,7 @@ bytgpio* at acpi? sdhc* at acpi? acpihve* at acpi? chvgpio*at acpi? +glkgpio* at acpi? mpbios0at bios0 Index: sys/dev/acpi/files.acpi === RCS file: /cvs/src/sys/dev/acpi/files.acpi,v retrieving revision 1.51 diff -u -p -u -r1.51 files.acpi --- sys/dev/acpi/files.acpi 17 Jun 2019 18:28:18 - 1.51 +++ sys/dev/acpi/files.acpi 22 Jun 2019 08:49:39 - @@ -131,6 +131,11 @@ device chvgpio attach chvgpio at acpi file dev/acpi/chvgpio.c chvgpio +# Intel Gemini Lake GPIO +device glkgpio +attach glkgpio at acpi +file dev/acpi/glkgpio.c glkgpio
Fix regress/sys/rtable for octeon
Hi, while running regression tests on an octeon ERL, I noticed that no-macro-redefined flag was not known to the compiler. I added some #undefs and some hours ago a change to art_walk made the tests fail too. The no-macro-redefine was added 3 month ago. Thanks, mbuhl Index: regress/sys/net/rtable/Makefile.inc === RCS file: /mount/openbsd/cvs/src/regress/sys/net/rtable/Makefile.inc,v retrieving revision 1.4 diff -u -p -r1.4 Makefile.inc --- regress/sys/net/rtable/Makefile.inc 31 Mar 2019 14:03:40 - 1.4 +++ regress/sys/net/rtable/Makefile.inc 21 Jun 2019 18:26:06 - @@ -9,6 +9,6 @@ SRCS+= art.c CFLAGS+= -DART .endif -CPPFLAGS+= -I${TOPDIR} -Wall -Wno-macro-redefined +CPPFLAGS+= -I${TOPDIR} -Wall .PATH: ${TOPDIR} ${TOPDIR}/../../../../sys/net Index: regress/sys/net/rtable/srp_compat.h === RCS file: /mount/openbsd/cvs/src/regress/sys/net/rtable/srp_compat.h,v retrieving revision 1.5 diff -u -p -r1.5 srp_compat.h --- regress/sys/net/rtable/srp_compat.h 27 Jul 2017 13:34:30 - 1.5 +++ regress/sys/net/rtable/srp_compat.h 21 Jun 2019 14:38:33 - @@ -48,7 +48,9 @@ srp_swap_locked(struct srp *srp, void *n */ #define SRPL_INIT(_sl) SLIST_INIT(_sl) +#undef SRPL_HEAD #define SRPL_HEAD(name, entry) SLIST_HEAD(name, entry) +#undef SRPL_ENTRY #define SRPL_ENTRY(type) SLIST_ENTRY(type) #define SRPL_FIRST(_sr, _sl) SLIST_FIRST(_sl); Index: regress/sys/net/rtable/delete/main.c === RCS file: /mount/openbsd/cvs/src/regress/sys/net/rtable/delete/main.c,v retrieving revision 1.5 diff -u -p -r1.5 main.c --- regress/sys/net/rtable/delete/main.c15 Nov 2016 10:43:41 - 1.5 +++ regress/sys/net/rtable/delete/main.c21 Jun 2019 18:20:20 - @@ -58,9 +58,9 @@ main(int argc, char *argv[]) do_from_file(0, AF_INET6, filename, route_insert); - rtable_walk(0, AF_INET6, rtentry_delete, NULL); + rtable_walk(0, AF_INET6, NULL, rtentry_delete, NULL); - rtable_walk(0, AF_INET6, rtentry_dump, NULL); + rtable_walk(0, AF_INET6, NULL, rtentry_dump, NULL); #ifdef ART struct art_root *ar; Index: regress/sys/net/rtable/fullfeed/main.c === RCS file: /mount/openbsd/cvs/src/regress/sys/net/rtable/fullfeed/main.c,v retrieving revision 1.3 diff -u -p -r1.3 main.c --- regress/sys/net/rtable/fullfeed/main.c 15 Nov 2016 10:43:41 - 1.3 +++ regress/sys/net/rtable/fullfeed/main.c 21 Jun 2019 18:20:38 - @@ -53,7 +53,7 @@ main(int argc, char *argv[]) do_from_file(0, af, filename, route_insert); do_from_file(0, af, filename, route_lookup); - rtable_walk(0, af, rtentry_dump, NULL); + rtable_walk(0, af, NULL, rtentry_dump, NULL); do_from_file(0, af, filename, route_delete);
Re: bgpd fix mrt table dumps
Claudio Jeker(cje...@diehard.n-r-g.com) on 2019.06.22 10:30:46 +0200: > Once again I broke mrt table dumps a bit. This time by not dumping the sorry about that. > community data anymore. Add this back by adding the needed code in > rde_community.c and some other minor adjustments. > > With this the just commited regress test passes again :) and i checked the dumps, and the code looks ok. > -- > :wq Claudio > > Index: mrt.c > === > RCS file: /cvs/src/usr.sbin/bgpd/mrt.c,v > retrieving revision 1.95 > diff -u -p -r1.95 mrt.c > --- mrt.c 22 Jun 2019 05:44:05 - 1.95 > +++ mrt.c 22 Jun 2019 06:34:50 - > @@ -34,7 +34,8 @@ > #include "mrt.h" > #include "log.h" > > -int mrt_attr_dump(struct ibuf *, struct rde_aspath *, struct bgpd_addr *, > int); > +int mrt_attr_dump(struct ibuf *, struct rde_aspath *, struct rde_community *, > +struct bgpd_addr *, int); > int mrt_dump_entry_mp(struct mrt *, struct prefix *, u_int16_t, > struct rde_peer*); > int mrt_dump_entry(struct mrt *, struct prefix *, u_int16_t, struct > rde_peer*); > @@ -143,8 +144,8 @@ fail: > } > > int > -mrt_attr_dump(struct ibuf *buf, struct rde_aspath *a, struct bgpd_addr > *nexthop, > -int v2) > +mrt_attr_dump(struct ibuf *buf, struct rde_aspath *a, struct rde_community > *c, > +struct bgpd_addr *nexthop, int v2) > { > struct attr *oa; > u_char *pdata; > @@ -188,6 +189,10 @@ mrt_attr_dump(struct ibuf *buf, struct r > if (attr_writebuf(buf, ATTR_WELL_KNOWN, ATTR_LOCALPREF, &tmp, 4) == -1) > return (-1); > > + /* communities */ > + if (community_writebuf(buf, c) == -1) > + return (-1); > + > /* dump all other path attributes without modification */ > for (l = 0; l < a->others_len; l++) { > if ((oa = a->others[l]) == NULL) > @@ -272,7 +277,8 @@ mrt_dump_entry_mp(struct mrt *mrt, struc > return (-1); > } > > - if (mrt_attr_dump(buf, prefix_aspath(p), NULL, 0) == -1) { > + if (mrt_attr_dump(buf, prefix_aspath(p), prefix_communities(p), > + NULL, 0) == -1) { > log_warnx("mrt_dump_entry_mp: mrt_attr_dump error"); > goto fail; > } > @@ -401,7 +407,8 @@ mrt_dump_entry(struct mrt *mrt, struct p > nh = &addr; > } else > nh = &nexthop->exit_nexthop; > - if (mrt_attr_dump(buf, prefix_aspath(p), nh, 0) == -1) { > + if (mrt_attr_dump(buf, prefix_aspath(p), prefix_communities(p), > + nh, 0) == -1) { > log_warnx("mrt_dump_entry: mrt_attr_dump error"); > ibuf_free(buf); > return (-1); > @@ -529,7 +536,8 @@ mrt_dump_entry_v2(struct mrt *mrt, struc > log_warn("%s: ibuf_dynamic", __func__); > return (-1); > } > - if (mrt_attr_dump(tbuf, prefix_aspath(p), nh, 1) == -1) { > + if (mrt_attr_dump(tbuf, prefix_aspath(p), prefix_communities(p), > + nh, 1) == -1) { > log_warnx("%s: mrt_attr_dump error", __func__); > ibuf_free(buf); > return (-1); > @@ -641,7 +649,7 @@ mrt_dump_peer(struct ibuf *buf, struct r > goto fail; > } > break; > - case AID_UNSPEC: /* XXX special handling for peer_self? */ > + case AID_UNSPEC: /* XXX special handling for peerself? */ > DUMP_NLONG(buf, 0); > break; > default: > Index: rde.h > === > RCS file: /cvs/src/usr.sbin/bgpd/rde.h,v > retrieving revision 1.217 > diff -u -p -r1.217 rde.h > --- rde.h 22 Jun 2019 05:44:05 - 1.217 > +++ rde.h 22 Jun 2019 06:34:50 - > @@ -395,20 +395,21 @@ u_char *aspath_override(struct aspath * > u_int16_t *); > int aspath_lenmatch(struct aspath *, enum aslen_spec, u_int); > > -int community_match(struct rde_community *, struct community *, > +int community_match(struct rde_community *, struct community *, > struct rde_peer *); > -int community_set(struct rde_community *, struct community *, > +int community_set(struct rde_community *, struct community *, > struct rde_peer *); > -void community_delete(struct rde_community *, struct community *, > +void community_delete(struct rde_community *, struct community *, > struct rde_peer *); > > -int community_add(struct rde_community *, int, void *, size_t); > -int community_large_add(struct rde_community *, int, void *, size_t); > -int community_ext_add(struct rde_community *, int, void *, size_t); > +int community_add(struct rde_community *, int, void *, size_t); > +int community_large_add(struct rde_community *, int, void *, size_t); > +int community_ext_add(struct rde_community *,
Re: [patch] rsync: fix free() on uninitialized pointer with -rx and same device
Hiltjo Posthuma(hil...@codemadness.org) on 2019.06.21 13:32:10 +0200: > On Wed, Jun 12, 2019 at 06:58:31PM +0200, Hiltjo Posthuma wrote: > > On Thu, Jun 06, 2019 at 02:14:05PM +0200, Christian Weisgerber wrote: > > > Bj??rn Ketelaars: > > > > > > > Diff below is based on the latest diff from naddy@. Changes: > > > > - reallocarray likes type_t, as such changes type of nxdev and i; > > > > - use reallocarray instead of malloc as xdev is initialised as NULL. > > > > > > ok naddy@ > > > > > > -- > > > Christian "naddy" Weisgerber na...@mips.inka.de > > > > > > > Looks good to me. > > > > I have 2 or 3 more patches locally. It would be nice if the above patch can > > get > > committed so I can rebase and send a clean patch. > > > > Hi, > > This patch has not been committed yet. Is it possible to commit it or does it > need further work/review? If so, I'm happy to help. I just commited it, Thanks forthe reminder! /Benno