On Fri, Oct 18, 2013 at 11:31:37AM +0900, YAMAMOTO Takashi wrote:
> > +/* Attempts to shorten 'name' by creating a symlink for the directory part
> > of
> > + * the name and indirecting through <symlink>/<basename>. This works on
> > + * systems that support symlinks, as long as <basename> isn't too long.
> > + *
> > + * On success, returns 0 and stores the short name in 'short_name' and the
> > + * symbolic link to eventually delete in 'linkname'. */
> > +static int
> > +shorten_name_via_symlink(const char *name, char short_name[MAX_UN_LEN + 1],
> > + char linkname[MAX_UN_LEN + 1])
> > +{
> > + char *abs, *dir, *base;
> > + const char *tmpdir;
> > + int error;
> > + int i;
> > +
> > + abs = abs_file_name(NULL, name);
> > + dir = dir_name(abs);
> > + base = base_name(abs);
> > + free(abs);
> > +
> > + tmpdir = getenv("TMPDIR");
> > + if (tmpdir == NULL) {
> > + tmpdir = "/tmp";
> > + }
> > +
> > + for (i = 0; i < 10; i++) {
>
> i feel that 10 is too small as number of unix sockets ovs can use
> is larger in magnitude. while simultaneous use of this should be
> typically much smaller, it shouldn't be a problem to waste cycles
> here either. IMO safer is better.
I think that 10 sequential random number collisions in a 32-bit space is
more than a coincidence. However, 1000 doesn't hurt, so I changed it
back.
> > VLOG_WARN_RL(&rl, "Unix socket name %s is longer than maximum "
> > - "%d bytes (even shortened)", name, MAX_UN_LEN);
> > - } else {
> > - /* 'name' is too long and we have no workaround. */
> > - VLOG_WARN_RL(&rl, "Unix socket name %s is longer than maximum "
> > "%d bytes", name, MAX_UN_LEN);
>
> with your new definition of MAX_UN_LEN, this should be %zu.
Thanks for pointing that out.
> otherwise looks good to me and worked for me. thanks!
Great, I'll push this in a minute.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev