Re: [patch] epoll use a single inode ...

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linus Torvalds
Date: Wednesday, March 7, 2007 - 12:07 pm

On Wed, 7 Mar 2007, Eric Dumazet wrote:

Actually, it *can* be SMP-safe, if you do it right. Something like

	len = dentry->d_name.len;

	if (!len) {
		len = snprintf(dentry->d_iname,
			DNAME_INLINE_LEN_MIN,
			"pipe:[%lu]",
			dentry->d_inode->i_ino);
		smp_wmb();
		dentry->d_name.len = len;
	}
	if (len >= buflen)
		len = buflen-1;
	memcpy(buffer, dentry->d_iname, len);
	buffer[len] = 0;
	return buffer;

should work, although it depends on the fact that our snprintf() 
implementation should be "stable" (ie if snprintf() modifies the buffer 
temporarily as it goes along, that would break, but I think our 
vsnprintf is good in that respect).

So you could have two different CPU's doing the snprintf() on the same 
buffer at the same time (and assigning the length at the same time), but 
since they'll write the same thing, you don't really care.

It's a bit subtle, though. And probably not really worth it.

		Linus
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [patch] epoll use a single inode ..., Davide Libenzi, (Tue Mar 6, 5:37 pm)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Tue Mar 6, 5:51 pm)
Re: [patch] epoll use a single inode ..., Davide Libenzi, (Tue Mar 6, 6:01 pm)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Tue Mar 6, 6:27 pm)
Re: [patch] epoll use a single inode ..., Davide Libenzi, (Tue Mar 6, 6:47 pm)
Re: [patch] epoll use a single inode ..., Eric Dumazet, (Tue Mar 6, 11:52 pm)
Re: [patch] epoll use a single inode ..., Davide Libenzi, (Wed Mar 7, 12:15 am)
Re: [patch] epoll use a single inode ..., Eric Dumazet, (Wed Mar 7, 12:16 am)
Re: [patch] epoll use a single inode ..., Christoph Hellwig, (Wed Mar 7, 1:56 am)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Wed Mar 7, 10:02 am)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Wed Mar 7, 10:21 am)
Re: [patch] epoll use a single inode ..., Eric Dumazet, (Wed Mar 7, 10:31 am)
Re: [patch] epoll use a single inode ..., Eric Dumazet, (Wed Mar 7, 10:36 am)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Wed Mar 7, 10:45 am)
Re: [patch] epoll use a single inode ..., Eric Dumazet, (Wed Mar 7, 11:06 am)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Wed Mar 7, 11:30 am)
Re: [patch] epoll use a single inode ..., Eric Dumazet, (Wed Mar 7, 11:52 am)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Wed Mar 7, 12:07 pm)
Re: [patch] epoll use a single inode ..., Anton Blanchard, (Wed Mar 7, 3:14 pm)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Wed Mar 7, 3:57 pm)
Re: [patch] epoll use a single inode ..., Michael K. Edwards, (Wed Mar 7, 6:25 pm)
Re: [patch] epoll use a single inode ..., Kyle Moffett, (Wed Mar 7, 7:48 pm)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Wed Mar 7, 8:20 pm)
Re: [patch] epoll use a single inode ..., Eric Dumazet, (Thu Mar 8, 12:24 am)
Re: [patch] epoll use a single inode ..., Michael K. Edwards, (Thu Mar 8, 1:37 am)
Re: [patch] epoll use a single inode ..., Christoph Hellwig, (Thu Mar 8, 1:56 am)
Re: [patch] epoll use a single inode ..., Eric Dumazet, (Thu Mar 8, 2:42 am)
Re: [patch] epoll use a single inode ..., Christoph Hellwig, (Thu Mar 8, 3:21 am)
Re: [patch] epoll use a single inode ..., Eric Dumazet, (Thu Mar 8, 4:11 am)
Re: [patch] epoll use a single inode ..., Christoph Hellwig, (Thu Mar 8, 4:18 am)
Re: [patch] epoll use a single inode ..., Linus Torvalds, (Thu Mar 8, 8:52 am)
Re: [patch] epoll use a single inode ..., Valdis.Kletnieks, (Thu Mar 8, 9:57 am)
Re: [patch] epoll use a single inode ..., Bob Copeland, (Thu Mar 8, 1:00 pm)
Re: [patch] epoll use a single inode ..., Kyle Moffett, (Thu Mar 8, 6:34 pm)
Re: [patch] epoll use a single inode ..., Anton Blanchard, (Thu Mar 8, 7:46 pm)
Re: [patch] epoll use a single inode ..., Anton Blanchard, (Thu Mar 8, 7:51 pm)
Re: [patch] epoll use a single inode ..., Anton Blanchard, (Thu Mar 8, 7:52 pm)