patch for 2.1.121 msdos fs -- please test!

Bill Hawes (whawes@star.net)
Sat, 12 Sep 1998 09:16:42 -0400


This is a multi-part message in MIME format.
--------------3DB1FB992B23E068114C0B6A
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

I've rewritten the msdos fs rename routines to avoid several race
problems associated with busy dentries, and have attached a patch for
testing. The revised code is able to withstand extended stress-testing
where the original would fail quickly with a filesystem panic or other
problems.

The changes are:
(1) Disallow renames across directories if the source is busy, as this
requires an inode change and can't be done if other processes are using
the dentry. Also, reorder operations so that all of the required
resources are obtained before switching inodes, so that there are no
error exits after the switch.

(2) Disallow renames if the target dentry is busy. Msdos-fs destroys the
inode of the target, so it really doesn't work to allow anyone to
continue using the dentry after the rename. I made this code
conditionally compiled in case someone can't live with it, but removing
the test gives a quick failure with a filesystem panic.

(3) Added a test to check for a negative target when the fat_scan
indicates that the file should exist. I'm not sure why this happens, but
having a NULL inode causes an immediate oops, so testing is preferable.

(4) Rewrote the msdos_lookup routine to avoid creating a negative
dentry if the inode is busy. Since the file in question does exist,
it's not correct to create a negative dentry, and returning an error
would be better. (This may be related to (3) above.)

Also a few other miscellaneous cleanups are included.

With these changes in place msdos-fs appears to be more robust, and
umsdos works much more reliably as well.

Regards,
Bill
--------------3DB1FB992B23E068114C0B6A
Content-Type: application/x-gzip; name="msdos_121-patch.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="msdos_121-patch.gz"

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
--------------3DB1FB992B23E068114C0B6A--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/faq.html