decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books
Your contributions keep Groklaw going.
To donate to Groklaw 2.0:

Groklaw Gear

Click here to send an email to the editor of this weblog.


Contact PJ

Click here to email PJ. You won't find me on Facebook Donate Paypal


User Functions

Username:

Password:

Don't have an account yet? Sign up as a New User

No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
Tridge -- Subject: [PATCH] Add CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES option
Friday, May 01 2009 @ 07:38 PM EDT

The community is at work, I see. Not only is there a prior art search going on regarding three Microsoft patents asserted against TomTom (details here), but now Andrew Tridgell has posted some code on LKML. You'll never guess what it does? I'll let tridge tell you:
When this option is enabled the VFAT filesystem will refuse to create new files with long names. Accessing existing files with long names will continue to work.
In a perfect world, there would be no bullies, no software patents, and no one would need to write code like this. But here in the real world, with our very practical feet firmly planted on terra firma, aren't you glad you have some very clever friends?

Back in July of 2003, in the very first interview I ever gave, I was asked if I thought Microsoft was behind the SCO attacks on Linux, and while I said back then that I didn't know, I felt the issue was bigger than the players, that it was a culture clash between proprietary software and FOSS, and I expressed confidence that no matter who was involved, FOSS had a wonderful edge:

So, what do you do about a bully? If he's bigger than you are, you certainly try to outsmart him. There's no lack of brains on our side, happily.
Did I nail it, or did I nail it?

For the historical record, and because I just like looking at it, here's the post:

***************************

Subject: [PATCH] Add CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES option
From: Dave Kleikamp
Date: Fri, 01 May 2009 12:41:29 -0500
From: Andrew Tridgell
Subject: [PATCH] Add CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES option

When this option is enabled the VFAT filesystem will refuse to create new files with long names. Accessing existing files with long names will continue to work.

File names to be created must conform to the 8.3 format. Mixed case is not allowed in either the prefix or the suffix.

Signed-off-by: Andrew Tridgell
Signed-off-by: Dave Kleikamp
Acked-by: Steve French
Cc: Ogawa Hirofumi
Cc: Mingming Cao

---
 fs/fat/Kconfig      |   18 ++++++++++++++++++
 fs/fat/namei_vfat.c |   26 +++++++++++++++++++++-----
 2 files changed, 39 insertions(+), 5 deletions(-)
diff --git a/fs/fat/Kconfig b/fs/fat/Kconfig
index 182f9ff..1439681 100644
--- a/fs/fat/Kconfig
+++ b/fs/fat/Kconfig

@@ -98,3 +98,21 @@ config FAT_DEFAULT_IOCHARSET
 
 	  Enable any character sets you need in File Systems/Native Language
 	  Support.
+
+config VFAT_NO_CREATE_WITH_LONGNAMES
+	bool "Disable creating files with long names"
+	depends on VFAT_FS
+	default n
+	help
+	  Set this to disable support for creating files or directories with
+	  names longer than 8.3 (the original DOS maximum file name length)
+	  e.g. naming a file FILE1234.TXT would be allowed but creating or
+	  renaming a file to FILE12345.TXT or FILE1234.TEXT would not
+	  be permitted.
+
+	  Case on files is only preserved if all of the prefix is the same
+	  case and all of the extension is the same case. So the names
+	  "FILE.txt", "file.TXT" would be case preserved, but if you create a
+	  file called "File.TxT" then it will be stored on disk as "FILE.TXT".
+
+	  Reading files with long file names is still permitted.
diff --git a/fs/fat/namei_vfat.c b/fs/fat/namei_vfat.c
index a0e00e3..cf0400e 100644
--- a/fs/fat/namei_vfat.c
+++ b/fs/fat/namei_vfat.c
@@ -316,6 +316,7 @@ static int vfat_create_shortname(struct inode *dir, struct nls_table *nls,
 	int sz = 0, extlen, baselen, i, numtail_baselen, numtail2_baselen;
 	int is_shortname;
 	struct shortname_info base_info, ext_info;
+	unsigned shortname_flags = opts->shortname;
 
 	is_shortname = 1;
 	INIT_SHORTNAME_INFO(&base_info);
@@ -424,13 +425,20 @@ static int vfat_create_shortname(struct inode *dir, struct nls_table *nls,
 	memcpy(name_res, base, baselen);
 	memcpy(name_res + 8, ext, extlen);
 	*lcase = 0;
+
+#ifdef CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES
+	if (is_shortname == 0)
+		return -ENAMETOOLONG;
+	shortname_flags = VFAT_SFN_CREATE_WINNT;
+#endif
+
 	if (is_shortname && base_info.valid && ext_info.valid) {
 		if (vfat_find_form(dir, name_res) == 0)
 			return -EEXIST;
 
-		if (opts->shortname & VFAT_SFN_CREATE_WIN95) {
+		if (shortname_flags & VFAT_SFN_CREATE_WIN95) {
 			return (base_info.upper && ext_info.upper);
-		} else if (opts->shortname & VFAT_SFN_CREATE_WINNT) {
+		} else if (shortname_flags & VFAT_SFN_CREATE_WINNT) {
 			if ((base_info.upper || base_info.lower) &&

 			    (ext_info.upper || ext_info.lower)) {
 				if (!base_info.upper && base_info.lower)
@@ -593,15 +601,19 @@ static int vfat_build_slots(struct inode *dir, const unsigned char *name,
 {
 	struct msdos_sb_info *sbi = MSDOS_SB(dir->i_sb);
 	struct fat_mount_options *opts = &sbi->options;
-	struct msdos_dir_slot *ps;
 	struct msdos_dir_entry *de;
-	unsigned char cksum, lcase;
+	unsigned char lcase;
 	unsigned char msdos_name[MSDOS_NAME];
 	wchar_t *uname;
 	__le16 time, date;
 	u8 time_cs;
-	int err, ulen, usize, i;
+	int err, ulen, usize;
+#ifndef CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES
+	unsigned char cksum;
+	int i;
 	loff_t offset;
+	struct msdos_dir_slot *ps;
+#endif
 
 	*nr_slots = 0;
 
@@ -628,6 +640,9 @@ static int vfat_build_slots(struct inode *dir, const unsigned char *name,
 		goto shortname;
 	}
 
+#ifdef CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES
+	de = (struct msdos_dir_entry *)slots;
+#else
 	/* build the entry of long file name */
 	cksum = fat_checksum(msdos_name);
 
@@ -645,6 +660,7 @@ static int vfat_build_slots(struct inode *dir, const unsigned char *name,
 	}
 	slots[0].id |= 0x40;
 	de = (struct msdos_dir_entry *)ps;
+#endif
 
 shortname:
 	/* build the entry of 8.3 alias name */
-- 
David Kleikamp
IBM Linux Technology Center




  


Tridge -- Subject: [PATCH] Add CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES option | 190 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Disabling features is not outsmarting the bully
Authored by: Anonymous on Friday, May 01 2009 @ 07:47 PM EDT
It's not outsmarting a bully to kowtow to him. As far as I can tell, that's
just what disabling or removing features from software entails, and that's just
what Tridge's patch does.

[ Reply to This | # ]

Canonical Corrections Thread
Authored by: Ed L. on Friday, May 01 2009 @ 08:04 PM EDT
You know what I mean. And please don't be terrifically offended if we politely request you take your silly Ubuntu bugs across the hall. :-)

OTOH, if you difficulty with PJ's article, please indicate the text in the title of your post. Thanks!

---
The dream of vengeance is the darkest of dark, sad dreams. -
Stephen R. Donaldson

[ Reply to This | # ]

Canonical Newspicks thread
Authored by: Ed L. on Friday, May 01 2009 @ 08:06 PM EDT
Please indicate the particular News you are picky about in the title of your post. Thanks!

---
The dream of vengeance is the darkest of dark, sad dreams. -
Stephen R. Donaldson

[ Reply to This | # ]

Canonical Off-Topic OT thread
Authored by: Ed L. on Friday, May 01 2009 @ 08:10 PM EDT
Please respect The Rules. Or at least the tactful suggestions. Provide clickable links as per the www.example.com template in the "Here's how to post in HTML" tip at the bottom of your "Post a Comment" page. Thanks!

---
The dream of vengeance is the darkest of dark, sad dreams. -
Stephen R. Donaldson

[ Reply to This | # ]

Anyone remember old linux UMSDOS?
Authored by: tz on Friday, May 01 2009 @ 08:19 PM EDT
Before the 2.0 series and VFAT, Linux supported a "umsdos" filesystem
which allowed long filenames, but also everything else (symlinks, I think even
hard links, device nodes, named pipes, etc.).

A properly configured linux system could boot from a umsdos formatted system.

Prior art?

[ Reply to This | # ]

Tridge -- Subject: [PATCH] Add CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES option
Authored by: dyfet on Friday, May 01 2009 @ 09:24 PM EDT
This reminds me of disabling the the microcode hinting interpreter (BCI) in
freetype. Having interpretable bytecode hinting in a (truetype) font was
patented by Apple (that is, executing a program became illegal...), so freetype
often was shipped in binary form with the interpreter disabled, although it was
a compile-time option and hence was included in the source. Simply publishing
information on how to do something (distribution) is not itself a patent
violation, although actually performing said operation (use) is.

Refer to http://beranger.org/index.php?article=2031&page=3k for some
background. This episode, and that of BCI in freetype, both give us good
reasons also why software and patents need a divorce...

[ Reply to This | # ]

Slow thread here
Authored by: webster on Friday, May 01 2009 @ 09:53 PM EDT
..
Does this mean that TomTom could have used this patch and totally dodged the
VFAT patent claims of the Monopoly?

[ Reply to This | # ]

code license
Authored by: Anonymous on Friday, May 01 2009 @ 10:03 PM EDT
I just want to point out a potential "license issue" with what was
just posted...

Technically, the code posted to LKML is licensed under the GPLv2, like the rest
of the Linux kernel. The rest of groklaw is under the creative commons license
(see the bottom of the page)

Now, a license shill might say that by looking at or supporting this
"viral" linux/gpl stuff you have to gpl all of your code, but of
course we know better.

But with that said, if PJ were to turn this site into a commercialized success
(think lucrative book deal), could she be attacked for misusing GPL code?

Or are the anti-GPL fudsters as wrong as I think they are?

--Jpvlsmv (not logged in from my cell phone)

[ Reply to This | # ]

OK, I have to ask...
Authored by: josmith42 on Friday, May 01 2009 @ 11:17 PM EDT
So, supposedly one of the requirements of an idea being patentable is that it's novel and non-obvious. How can the removal of this patentable idea involve so little code? It seems to me that the removal of something so brilliant that it can be patented should be so complex that it can't be grokked in 5 minutes by anyone, let alone a non-genius like me.

---
This comment was typed using the Dvorak keyboard layout. :-)

[ Reply to This | # ]

Alternative link to LKML
Authored by: Nick_UK on Saturday, May 02 2009 @ 04:24 AM EDT
The link supplied in the article is not working at this time (May 2nd 9:22 BST) - seems a site issue, so here is an alternative link:

[PATCH] Add CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES option

Nick

[ Reply to This | # ]

Tridge -- Subject: [PATCH] Add CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES option
Authored by: Anonymous on Saturday, May 02 2009 @ 04:57 AM EDT
Presumably Linux supports 'long' file names in Microsoft Windows formatted file
systems as an interoperability convenience. There are plenty of other
open-source file systems which never had the length restriction in the first
place.

By asserting this patent, Microsoft seem to be saying that they do not wish the
rest of the world to understand what they (and their customers) are saying.
Rather like developing your own dialect of Martian, and when the rest of the
world learns to speak Martian, you sue them for it with a view to blocking their
ability to speak (like Microsoft filed a request to block the ability of TomTom
to sell product into the USA. That way lies transatlantic trade wars)

Really, speaking Martian is a courtesy the rest of the world extends to
Microsoft's customers. We don't have to do it, and we can get along OK without
it if we have to.

[ Reply to This | # ]

Am I just slow?
Authored by: Alan(UK) on Saturday, May 02 2009 @ 05:23 AM EDT
Surely if I buy a device pre-formatted with VFAT, I would assume that the
manufacturer has already obtained a licence that would enable the customer to
use the product. Why should I need another licence?

---
Microsoft is nailing up its own coffin from the inside.

[ Reply to This | # ]

Andew's work is appreciated - but ditching FAT is what we should be doing
Authored by: TiddlyPom on Saturday, May 02 2009 @ 03:31 PM EDT
Lets face it, FAT is an appalling file system which should have been retired years ago. I run Ubuntu on my home boxes (and also use CentOS) so I tend to use EXT2 on flash disks (to avoid journalling writes) although YAFFS and UBIFS are also alternatives (and there are others). Just about ANYTHING is better than FAT.

The problem (as always) is the vast numbers of non-technical Windows users out there although EXT2IFS would work nicely for EXT2 (which is what I use when needing to swap data with Windows users - I have copies of EXT2IFS and Explore2fs on a mini-CD which I carry with me. What is needed is for companies like TomTom to move over to (say) EXT2 instead of trying to keep FAT/FAT32 alive (which is only in Microsoft's interests anyway - being only important in trying to damage Linux). They could also install EXT2IFS at the same time and suddenly EXT2 becomes a wall supported file system (on Windows).

Now that Linux has more than 1% overall desktop usage, we need to build on this by promoting cross platform technologies rather than letting Microsoft bully us. We need to avoid introducing more and more dependencies (such as TomBoy and Banshee) on lock-in technologies like Mono and avoiding idiotic file systems like FAT. (As an aside - I am pleased to see support for Gnote over TomBoy).

Although it would be a complete pain initially, it would probably be better to remove FAT altogether from STANDARD BUILDS of the kernel (like Red Hat/CentOS do with NTFS) and (say) make it a FUSE driver for those that need it. That would remove some ammunition from patent bullies like Microsoft - whilst we make sure that we find sufficient prior art (which there must be) to invalidate any patents over VFAT that Microsoft (or others) hold.

---
Microsoft Software is expensive, bloated, bug-ridden and unnecessary.
Use Open Source Software instead.

[ Reply to This | # ]

Where are the amended claims?
Authored by: bugstomper on Saturday, May 02 2009 @ 06:25 PM EDT
In looking up the details of the patent claims to see how this patch avoids
them, I looked at the claims at various sites that have a database of US
patents, and I looked at articles about how PubPat successfully got the USPTO to
reject the patents in 2004 using obviousness over some earlier patents and then
Microsoft got them reinstated in 2006 after filing amended claims.

When I look at the claims in the databases I don't see anything different from
what is described in PubPat's 2004 filings to have then re-examined. Does anyone
have a link to the amendments to the claims? I don't see how to find prior art
or workarounds for the patents without knowing what they actually say now.

[ Reply to This | # ]

Alternative: use only LONG names, never SHORT
Authored by: losat on Monday, May 04 2009 @ 11:51 AM EDT
I've considered previously the possibility of the opposite patch and config
option that would use only LONG file names and never SHORT ones, which on first
look seems to avoid the patent just as well. Interoperability should be okay,
because modern systems will look to the long file name not the (empty) short
one. (It just wouldn't work with old DOS.)

[ Reply to This | # ]

Tridge -- Subject: [PATCH] Add CONFIG_VFAT_NO_CREATE_WITH_LONGNAMES option
Authored by: Anonymous on Tuesday, May 05 2009 @ 11:39 PM EDT
in a perfect world, no one steals software, or Operating Systems, or idea's from
others, they make up their own stuff, they innovate, they invent, they use their
own brains to progress the world.

They do not steal a file system because it will make their crappy software more
popular, because you cant come up with something yourself that is as popular.

In a perfect world, people would not expect to be allowed to steal peoples
creations, music, books, movies, inventions, patents, money, property, or source
of income.

In a perfect world, Linux would not be a clone of a 1970's OS copied and
modified, it would be its own design standalone operating system. It would have
its own file systems (that work), it would have its own Kernal, (not a one for
one clone of UNIX).

In a perfect world people would take up FOSS and Linux because its just so much
better in terms of quality, performance, and security (business security).

In a perfect world it should not take a quality product 17 years to scrape out
1% market share on the desktop..

But, its not a perfect world, and people just have to make choices as to what
they want to use.

Millions and Millions of people have made that choice, and like Betamax Vs VHS,
VHS lost, (FOSS is VHS)
(possibly technically better, but lost the popularity race by a LOOOOG way).

[ Reply to This | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )