From: Boaz Harrosh <bharrosh@panasas.com>
To: Jamie Lokier <jamie@shareable.org>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>,
tridge@samba.org, Pavel Machek <pavel@ucw.cz>,
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>,
john.lanza@linux.com, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org,
Dave Kleikamp <shaggy@linux.vnet.ibm.com>,
Steve French <sfrench@us.ibm.com>, Mingming Cao <cmm@us.ibm.com>,
Paul McKenney <paulmck@linux.vnet.ibm.com>
Subject: Re: [PATCH] Added CONFIG_VFAT_FS_DUALNAMES option
Date: Tue, 07 Jul 2009 13:02:58 +0300 [thread overview]
Message-ID: <4A531D52.6040508@panasas.com> (raw)
In-Reply-To: <20090706204127.GD13638@shareable.org>
On 07/06/2009 11:41 PM, Jamie Lokier wrote:
> James Bottomley wrote:
>> On Wed, 2009-07-01 at 14:48 +0300, Boaz Harrosh wrote:
>>> On 07/01/2009 01:50 PM, tridge@samba.org wrote:
>>>> Hi Pavel,
>>>>
>>>> We did of course consider that, and the changes to the patch to
>>>> implement collision avoidance are relatively simple. We didn't do it
>>>> as it would weaken the legal basis behind the patch. I'll leave it to
>>>> John Lanza (the LF patent attorney) to expand on that if you want more
>>>> information.
>>>>
>>> You completely lost me here. And I thought I did understand the patent
>>> and the fix.
>>>
>>> what is the difference between.
>>>
>>> short_name = rand(sid);
>>> and
>>> short_name = sid++;
>>>
>>> Now if you would do
>>> short_name = MD5(long_name);
>>>
>>> That I understand since short_name is some function of long_name
>>> but if I'm just inventing the short_name out of my hat. In what legal
>>> system does it matter what is my random function I use?
>> We're sort of arguing moot technicalities here. If you look at the way
>> the filename is constructed, given the constraints of a leading space
>> and a NULL, the need for a NULL padded leading slash extension and the
>> need to put control characters in the remaining bytes, we've only got 30
>> bits to play with, we're never going to avoid collisions in a space of
>> up to 31 bits.
>
>> Technically, a random function is at least as good at
>> collision avoidance as any deterministic solution ...
>
> No, it isn't.
>
> A deterministic value based on position in the directory, or by
> checking for collisions and avoiding them, will _never_ collide,
> provided you limit directories to no more than 2^30 entries, which is
Exactly this is the key, find the real limit and enforce it.
> reasonable for FAT.
>
> Whereas a random value can collide.
> That's a fundamental technical difference.
>
> A quick read of the Birthday Problem page on Wikipedia leads to:
>
> With a directory of 1000 files, not especially rare with a camera
> or MP3 players, and 30-bit random numbers:
>
> The probably of a collision is 0.04% [1]
>
> If 10000 people each have a directory of 1000 files (not
> unreasonable given the huge number of people who use FAT media),
> the probability that any of them have a collision is approximately
> 100%.
>
>
> [1] perl -e '$d = 2.0**30; $n = 1000; $x = 1; for $k (1..$n-1) { $x *= (1 - $k/$d); } printf "Probability = %f%%\n", 100*(1-$x);'
>
> In other words, using random values you are _guaranteeing_ collisions
> for a few users.
>
Thanks, I thought it was just me.
> So the argument comes down to: Does it matter if there are collisions?
>
> Tridge's testing didn't blue screen Windows XP.
> Tridge's testing did run a lot of operaitons.
>
> But Tridge isn't 10000 people doing crazy diverse things with
> different devices in all sorts of systematic but different patterns
> over a period of years.
>
What? you say there are 10,000 people with cameras that are using Linux
in the world ;-)
> Given it's technically trivial to avoid collisions completely, and
> there is some risk of breakage, even though it would be rare, there
> had better be a good reason for not doing it.
>
I wish the lawyers people would come forward, as promised,,and explain what
are the constraints on the short_name, given a long_name is present.
I'm still waiting for that private mail in my e-box. If the names do not
correspond at all but are both valid, why is that a problem?
> -- Jamie
Thanks
Boaz
next prev parent reply other threads:[~2009-07-07 10:03 UTC|newest]
Thread overview: 212+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-26 19:19 [PATCH] Added CONFIG_VFAT_FS_DUALNAMES option tridge
2009-06-26 21:40 ` H. Peter Anvin
2009-06-26 22:21 ` tridge
2009-06-27 1:48 ` OGAWA Hirofumi
2009-06-27 17:26 ` Jan Engelhardt
2009-06-27 1:56 ` OGAWA Hirofumi
2009-06-27 17:21 ` Jan Engelhardt
2009-06-28 2:59 ` tridge
2009-06-28 21:57 ` Jamie Lokier
2009-06-28 22:02 ` Jan Engelhardt
2009-06-28 22:05 ` Jamie Lokier
2009-06-29 1:23 ` tridge
2009-06-28 1:54 ` Eric W. Biederman
2009-06-28 2:19 ` tridge
2009-06-28 4:10 ` Eric W. Biederman
2009-06-28 5:38 ` tridge
2009-06-28 6:25 ` OGAWA Hirofumi
2009-06-28 19:51 ` Eric W. Biederman
2009-06-28 20:13 ` James Bottomley
2009-06-28 20:45 ` Eric W. Biederman
2009-06-28 21:45 ` James Bottomley
2009-06-28 21:28 ` tridge
2009-06-29 1:30 ` tridge
2009-06-29 22:18 ` Greg KH
2009-06-29 22:42 ` tridge
2009-06-29 22:52 ` Greg KH
2009-06-29 23:36 ` OGAWA Hirofumi
2009-06-29 23:51 ` tridge
2009-06-30 0:55 ` OGAWA Hirofumi
2009-06-30 6:31 ` Pavel Machek
2009-07-01 10:09 ` Alan Cox
2009-07-01 11:11 ` tridge
2009-07-01 11:34 ` Alan Cox
2009-07-01 10:49 ` Rusty Russell
2009-07-01 11:25 ` Alan Cox
2009-07-01 14:05 ` Theodore Tso
2009-07-01 14:17 ` Alan Cox
2009-07-02 1:42 ` tridge
2009-07-02 10:33 ` Alan Cox
2009-07-02 12:43 ` tridge
2009-07-02 21:49 ` Pavel Machek
2009-07-06 19:57 ` Jamie Lokier
2009-07-01 16:18 ` Stefan Richter
2009-07-01 16:18 ` Stefan Richter
2009-07-02 23:17 ` CONFIG_VFAT_FS_DUALNAMES regression Jan Engelhardt
2009-07-02 23:17 ` Jan Engelhardt
2009-07-02 23:37 ` tridge
2009-07-03 0:11 ` Jan Engelhardt
2009-07-03 0:11 ` Jan Engelhardt
2009-07-03 0:25 ` tridge
2009-07-03 1:10 ` Jan Engelhardt
2009-07-03 1:10 ` Jan Engelhardt
2009-07-03 1:26 ` tridge
2009-07-03 1:58 ` Jan Engelhardt
2009-07-11 0:14 ` Jamie Lokier
2009-07-02 23:46 ` CONFIG_VFAT_FS_DUALNAMES regressions Jan Engelhardt
2009-07-02 23:46 ` Jan Engelhardt
2009-07-03 0:14 ` tridge
2009-07-03 0:58 ` OGAWA Hirofumi
2009-07-03 1:11 ` tridge
2009-07-03 1:50 ` Jan Engelhardt
2009-07-03 1:50 ` Jan Engelhardt
2009-07-03 1:59 ` tridge
2009-07-03 2:09 ` Jan Engelhardt
2009-07-03 2:09 ` Jan Engelhardt
2009-07-03 3:25 ` tridge
2009-07-03 6:46 ` OGAWA Hirofumi
2009-07-03 9:40 ` Jan Engelhardt
2009-07-03 9:40 ` Jan Engelhardt
2009-07-03 12:24 ` tridge
2009-07-04 3:09 ` OGAWA Hirofumi
2009-07-06 11:40 ` Jan Engelhardt
2009-07-06 13:05 ` tridge
2009-07-06 16:17 ` David Newall
2009-07-06 16:17 ` David Newall
2009-07-06 19:33 ` Jamie Lokier
2009-07-06 18:55 ` Jan Engelhardt
2009-07-06 20:26 ` tridge
2009-07-06 20:42 ` Jan Engelhardt
2009-07-06 20:42 ` Jan Engelhardt
2009-07-08 7:31 ` tridge
2009-07-06 20:36 ` Jan Engelhardt
2009-07-06 20:58 ` Jamie Lokier
2009-07-06 21:08 ` Jan Engelhardt
2009-07-06 22:24 ` Jamie Lokier
2009-07-07 9:36 ` Jan Engelhardt
2009-07-07 0:21 ` tridge
2009-07-07 21:56 ` Martin Steigerwald
2009-07-07 22:09 ` Martin Steigerwald
2009-07-08 3:12 ` tridge
2009-07-08 10:04 ` Alan Cox
2009-07-08 10:48 ` tridge
2009-07-08 12:02 ` Alan Cox
2009-07-08 13:02 ` tridge
2009-07-08 13:25 ` Alan Cox
2009-07-09 1:20 ` tridge
2009-07-09 9:42 ` Alan Cox
2009-07-09 13:59 ` James Bottomley
2009-07-09 14:10 ` Alan Cox
2009-07-09 15:25 ` Theodore Tso
2009-07-09 17:15 ` Christoph Hellwig
2009-07-09 20:57 ` David Newall
2009-07-09 22:23 ` Martin Steigerwald
2009-07-10 1:45 ` David Newall
2009-07-10 18:49 ` Martin Steigerwald
2009-07-10 19:31 ` Jonathan Corbet
2009-07-10 20:40 ` Bartlomiej Zolnierkiewicz
2009-07-12 11:21 ` Jörn Engel
2009-07-12 11:21 ` Jörn Engel
2009-07-12 11:27 ` Jan Engelhardt
2009-07-12 11:27 ` Jan Engelhardt
2009-07-13 22:20 ` Jamie Lokier
2009-07-13 22:20 ` Jamie Lokier
2009-07-13 22:32 ` Jan Engelhardt
2009-07-10 21:14 ` Alan Cox
2009-07-12 8:52 ` David Newall
2009-07-10 0:09 ` Alan Cox
2009-07-08 12:23 ` Jan Engelhardt
2009-07-08 15:27 ` James Bottomley
2009-07-08 15:37 ` Alan Cox
2009-07-08 16:06 ` James Bottomley
2009-07-08 16:18 ` Alan Cox
2009-07-09 4:25 ` tridge
2009-07-09 5:27 ` OGAWA Hirofumi
2009-07-09 7:21 ` Pavel Machek
2009-07-09 7:34 ` David Newall
2009-07-09 9:51 ` Alan Cox
2009-07-09 4:53 ` OGAWA Hirofumi
2009-07-09 9:53 ` Alan Cox
2009-07-12 19:39 ` OGAWA Hirofumi
2009-07-21 3:37 ` tridge
2009-07-21 9:16 ` Boaz Harrosh
2009-07-21 10:31 ` Pavel Machek
2009-07-21 13:24 ` tridge
2009-07-21 15:08 ` John Lanza
2009-07-21 15:08 ` John Lanza
2009-07-21 19:36 ` John Lanza
2009-07-21 19:36 ` John Lanza
2009-07-21 21:37 ` Pavel Machek
2009-07-21 22:38 ` tridge
2009-07-21 10:44 ` Jan Engelhardt
2009-07-21 13:04 ` tridge
2009-07-21 15:06 ` John Lanza
2009-07-21 19:38 ` John Lanza
2009-07-21 19:38 ` John Lanza
2009-07-21 10:31 ` Pavel Machek
2009-07-21 13:19 ` tridge
2009-08-08 12:19 ` Pavel Machek
2009-07-08 11:39 ` Martin Steigerwald
2009-07-08 13:53 ` Jamie Lokier
2009-07-08 17:12 ` Jeremy Allison
2009-07-09 3:23 ` tridge
2009-07-09 13:34 ` Martin Steigerwald
2009-07-09 4:13 ` tridge
2009-07-09 19:47 ` Martin Steigerwald
2009-07-10 7:36 ` Pavel Machek
2009-07-10 21:12 ` Jamie Lokier
2009-07-10 21:28 ` Jamie Lokier
2009-07-11 2:03 ` Jamie Lokier
2009-07-07 19:51 ` Pavel Machek
2009-07-08 7:42 ` tridge
2009-07-08 10:27 ` Jan Engelhardt
2009-07-09 2:23 ` tridge
2009-07-09 8:24 ` Jan Engelhardt
2009-07-10 7:35 ` Pavel Machek
2009-07-06 20:04 ` Jamie Lokier
2009-07-08 7:30 ` tridge
2009-07-10 21:44 ` Jamie Lokier
2009-07-02 0:34 ` [PATCH] Added CONFIG_VFAT_FS_DUALNAMES option Rusty Russell
2009-07-02 21:46 ` Pavel Machek
2009-07-02 22:06 ` tridge
2009-07-02 22:33 ` Pavel Machek
2009-07-02 22:41 ` tridge
2009-07-02 22:44 ` Pavel Machek
2009-07-02 23:59 ` tridge
2009-07-08 9:21 ` Pavel Machek
2009-07-08 14:25 ` Paul E. McKenney
2009-07-08 21:42 ` tridge
2009-07-08 22:14 ` Paul E. McKenney
2009-07-08 23:59 ` Paul E. McKenney
2009-07-08 16:46 ` H. Peter Anvin
2009-07-03 0:03 ` Rusty Russell
2009-07-02 23:55 ` Rusty Russell
2009-07-01 10:50 ` tridge
2009-07-01 11:31 ` Alan Cox
2009-07-01 13:16 ` tridge
2009-07-01 13:38 ` Alan Cox
2009-07-01 14:02 ` tridge
2009-07-01 14:41 ` Alan Cox
2009-07-02 4:04 ` tridge
2009-07-02 10:32 ` Alan Cox
2009-07-02 12:38 ` tridge
2009-07-02 16:56 ` Alan Cox
2009-07-03 2:50 ` OGAWA Hirofumi
2009-07-02 14:56 ` James Bottomley
2009-07-02 15:27 ` Theodore Tso
2009-07-02 18:12 ` Alan Cox
2009-07-02 21:25 ` James Bottomley
2009-07-01 11:48 ` Boaz Harrosh
2009-07-01 12:28 ` tridge
2009-07-01 15:44 ` James Bottomley
2009-07-02 22:03 ` Pavel Machek
2009-07-06 20:41 ` Jamie Lokier
2009-07-07 10:02 ` Boaz Harrosh [this message]
2009-07-07 11:25 ` Jamie Lokier
2009-07-07 11:48 ` Boaz Harrosh
2009-07-07 11:50 ` tridge
2009-07-02 22:00 ` Pavel Machek
2009-07-02 22:23 ` tridge
2009-07-02 22:41 ` Pavel Machek
[not found] <4bbed3f70907082014t643209eaw5fc7cd7297f7af78@mail.gmail.com>
2009-07-09 13:16 ` John Lanza
2009-07-09 13:16 ` John Lanza
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A531D52.6040508@panasas.com \
--to=bharrosh@panasas.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=cmm@us.ibm.com \
--cc=hirofumi@mail.parknet.co.jp \
--cc=jamie@shareable.org \
--cc=john.lanza@linux.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=pavel@ucw.cz \
--cc=sfrench@us.ibm.com \
--cc=shaggy@linux.vnet.ibm.com \
--cc=tridge@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.