I used the current trunk. I could not find the unlink calls. If domain sockets are used this two methods are used.
In ./lib/ipc_socket.c static void qb_ipcc_us_disconnect(struct qb_ipcc_connection *c) { munmap(c->request.u.us.shared_data, SHM_CONTROL_SIZE); unlink(c->request.u.us.shared_file_name); qb_ipcc_us_sock_close(c->event.u.us.sock); qb_ipcc_us_sock_close(c->request.u.us.sock); qb_ipcc_us_sock_close(c->setup.u.us.sock); } In ./lib/ipc_setup.c void qb_ipcc_us_sock_close(int32_t sock) { shutdown(sock, SHUT_RDWR); close(sock); } I added in the latter the unlink calls. -----Ursprüngliche Nachricht----- Von: David Vossel [mailto:dvos...@redhat.com] Gesendet: Donnerstag, 18. Dezember 2014 18:13 An: The Pacemaker cluster resource manager Betreff: Re: [Pacemaker] [libqb]Unlink of files bound to sockets ----- Original Message ----- > > > I sent yesterday this email to the mailing list of libq > 'quarterback-de...@lists.fedorahosted.org'. > > But there is nearly no activity since august. i saw the email. i flagged it so it would get a response. > > I use the current trunk of libqb. > > In qb_ipcc_us_sock_close nd qb_ipcs_us_withdraw of lib/ipc_setup.c > sockets are closed. > > Is there a reason why the files bound to the sockets are not deleted > with unlink? > > Is unlinking not necessary with Linux? Unlinking is required for linux. For client/server connections. qb_ipcc_us_disconnect unlinks on the client side. qb_ipcs_us_disconnect unlinks on the server side. > I found thousands of files in statedir=/var/corosync/run after a while. What version of corosync are you using? There were some reference leaks for ipc connections in the corosync code we fixed a year or so ago that should have fixed this. -- David > > > I tried this and it seems to work without errors. > > > > e.g. > > void > > qb_ipcc_us_sock_close(int32_t sock) > > { > > #ifdef QB_SOLARIS > > struct sockaddr_un un_addr; > > socklen_t un_addr_len = sizeof(struct sockaddr_un); > > #endif > > shutdown(sock, SHUT_RDWR); > > #ifdef QB_SOLARIS > > if (getsockname(sock, (struct sockaddr *)&un_addr, &un_addr_len) == 0) > { > > if(strstr(un_addr.sun_path,"-") != NULL) { > > qb_util_log(LOG_DEBUG, "un_addr.sun_path=%s", un_addr.sun_path); > > unlink(un_addr.sun_path); > > } > > } else { > > qb_util_log(LOG_DEBUG, "getsockname returned errno=%d", errno); > > } > > #endif > > close(sock); > > } > > > > Regards > > > > Andreas > > _______________________________________________ > Pacemaker mailing list: Pacemaker@oss.clusterlabs.org > http://oss.clusterlabs.org/mailman/listinfo/pacemaker > > Project Home: http://www.clusterlabs.org Getting started: > http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf > Bugs: http://bugs.clusterlabs.org > _______________________________________________ Pacemaker mailing list: Pacemaker@oss.clusterlabs.org http://oss.clusterlabs.org/mailman/listinfo/pacemaker Project Home: http://www.clusterlabs.org Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf Bugs: http://bugs.clusterlabs.org _______________________________________________ Pacemaker mailing list: Pacemaker@oss.clusterlabs.org http://oss.clusterlabs.org/mailman/listinfo/pacemaker Project Home: http://www.clusterlabs.org Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf Bugs: http://bugs.clusterlabs.org