|
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
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
|
|
|