Annotation of dmsdos/patches/DIFFS.TXT, revision 1.1

1.1     ! root        1: 
        !             2: The list of CVF-FAT diffs is actually some lines below.
        !             3: 
        !             4: Some notes about applying patches
        !             5: ---------------------------------
        !             6: 
        !             7: This section is for people not familiar with kernel patches. Feel free to
        !             8: skip it if you are an experienced patch hacker :)
        !             9: 
        !            10: Well, as always be careful with diffs. Nobody knows whether they always
        !            11: apply correctly. Praise yourself lucky if you see errors on the screen -
        !            12: then at least you know that the patch failed. :)
        !            13: 
        !            14: However, I've seen patches applying without errors, but changing code at 
        !            15: the wrong place, even creating syntactically correct but senseless
        !            16: and not well working code. (For example, this happens for a small part of
        !            17: the patches if you use the plain 2.0.33 diff here for a fat32 patched
        !            18: 2.0.33 kernel or a 2.1.76 kernel. Argh. It's almost impossible to find
        !            19: and repair such an error if you haven't written the code yourself.)
        !            20: 
        !            21: From the patch manual:
        !            22: 
        !            23:        Patch  usually  produces the correct results, even when it
        !            24:        has to do a lot of guessing.   However,  the  results  are
        !            25:        guaranteed to be correct only when the patch is applied to
        !            26:        exactly the same version of the file that  the  patch  was
        !            27:        generated from.
        !            28: 
        !            29: So do at least the usual security steps. It's best to get a fresh kernel
        !            30: from the net (*not* upgrading by patches). But sometimes you need patches. 
        !            31: Ensure:
        !            32: 
        !            33:   A. Before applying a patch:
        !            34: 
        !            35:      1. Copy your complete kernel sources to another place, and operate
        !            36:         only on this test copy, e.g.
        !            37: 
        !            38:           cp -a /usr/src/linux-x.y.z /usr/src/linux-x.y.z-test
        !            39:           cd /usr/src/linux-x.y.z-test
        !            40: 
        !            41:      2. Remove all patch related files in the kernel sources, e.g.
        !            42: 
        !            43:           find . -name "*.orig" -exec rm {} \;
        !            44:           find . -name "*.rej" -exec rm {} \;
        !            45: 
        !            46:   B. Apply the patches you need. Order is important.
        !            47: 
        !            48:      1. Look at the first lines of the diff. There's very likely a complete
        !            49:         path in the filenames. If it begins with "linux..." you need the
        !            50:         option -p1, if it begins with "/usr/src/linux..." you need -p4 or
        !            51:         -p0 (you'll see). If the option is wrong or the number behind -p is
        !            52:         wrong, patch will display a prompt like "file to patch?" and wait
        !            53:         for your answer, which should be CTRL-C in that case :-). Okay:
        !            54: 
        !            55:           patch -p1 < your-favorite-diff
        !            56: 
        !            57:      2. After applying each patch, watch for reject files, e.g.
        !            58: 
        !            59:           find . -name "*.rej" -print
        !            60: 
        !            61:         If there are any, then the patch failed. You must repair it manually
        !            62:         now or you can give up completely. If you dare to repair it, take
        !            63:         a look at the *.rej files and try to find out what should have been
        !            64:         changed in the sources but couldn't be changed for some reasons.
        !            65:      
        !            66:         Just note, you *cannot* continue if any "*.rej" file is present and
        !            67:         the problem is not fixed manually. You will have messed up kernel
        !            68:         sources that won't work or won't even compile.
        !            69: 
        !            70:      3. After applying the patch and eventually fixing problems manually
        !            71:         remove all patch related files in the kernel sources, e.g.
        !            72: 
        !            73:           find . -name "*.orig" -exec rm {} \;
        !            74:           find . -name "*.rej" -exec rm {} \;
        !            75: 
        !            76:      4. Then apply the next patch (if you need), and so on.
        !            77: 
        !            78:   C. Recompile the kernel from scratch. Don't install it yet. Watch for
        !            79:      errors and warnings that were not present before:
        !            80: 
        !            81:          make mrproper (this is not always needed, but if problems arise
        !            82:                         without it, try again starting here)
        !            83:          make config   (this is also not always needed)
        !            84:          make dep
        !            85:          make clean
        !            86:          make zImage
        !            87:          make modules
        !            88:        
        !            89:      Okay, if everything succeeded, you might want to give it a try.
        !            90:      It's best to use a boot disk for the first test ('make zdisk'), but
        !            91:      if your configuration is highly modular this won't be enough,
        !            92:      so you might not have another choice than doing 'make zlilo' and
        !            93:      'make modules_install'. 
        !            94: 
        !            95:      Be sure to have a rescue boot and root floppy (a simple boot disk is
        !            96:      not always sufficient). I know most people are lazy and ignore this
        !            97:      until "it" happens. I've been lazy too :-) Also be sure to have
        !            98:      your old kernel and your old modules handy (if you only operated on
        !            99:      your test copy of the kernel, as I recommended above, you have them 
        !           100:      still somewhere in the original source tree).
        !           101:      
        !           102: 
        !           103: Good luck and happy hacking. :)
        !           104: 
        !           105: 
        !           106: ----------------------------------------------------------------------------
        !           107: 
        !           108: List of CVF-FAT related diffs
        !           109: -----------------------------
        !           110: 
        !           111: cvf.diff-2.0.33
        !           112: 
        !           113:   This is a diff was generated against a cyrix-patched 2.0.33 kernel (I need
        !           114:   cyrix support, so don't ask me to leave it out). This shouldn't matter as
        !           115:   the cyrix patches don't affect filesystem code. So just don't wonder why
        !           116:   the paths in that patch include the name 'cyrix-patched'. Of course, the
        !           117:   diff does not contain the cyrix patches itself :)
        !           118: 
        !           119:   This diff has been tested thoroughly and found to work with a plain 2.0.33 
        !           120:   kernel.
        !           121: 
        !           122:   If you are using the uvfat patches, uvfat will not work correctly on CVFs
        !           123:   (it cannot since some wrappers must be patched in). You must additionally
        !           124:   apply the cvf-uvfat.diff-2.0.33 patch.
        !           125:   
        !           126:   This patch does not work for fat32 support. Try the next one instead :)
        !           127:   This patch also fails for Linux 2.0.34 and newer. Try the next one in this 
        !           128:   case.
        !           129: 
        !           130: cvf.diff-2.0.33+fat32-0.2.8
        !           131: cvf.diff-2.0.34 (link to same file)
        !           132: 
        !           133:   This diff was generated against a cyrix-patched and fat32-patched 2.0.33 
        !           134:   kernel. It works also with a 2.0.33 kernel that is only fat32-patched.
        !           135:   The fat32 version used is 0.2.8. 
        !           136: 
        !           137:   Please don't misunderstand. This diff does *not* include fat32 support 
        !           138:   itself. It only works against a kernel that has already been patched for
        !           139:   fat32 support.
        !           140: 
        !           141:   This patch has also been tested against the new 2.0.34, 2.0.35 and 2.0.36
        !           142:   kernels and found to work without problems :) 
        !           143: 
        !           144: cvf-uvfat.diff-2.0.33
        !           145: 
        !           146:   This diff changes the uvfat filesystem so it works properly on CVFs.
        !           147:   Changes are minimal. This diff does not contain the uvfat patches itself.
        !           148:  
        !           149:   What uvfat is? Look:
        !           150:       uvfat : umsdos == vfat : msdos
        !           151:   Search the net for more information. There's a uvfat homepage:
        !           152:   http://lab1.psy.univie.ac.at/~michael/uvfat.html
        !           153: 
        !           154:   This diff must be applied *after* the uvfat patch and *after* the 
        !           155:   cvf.diff-2.0.33 patch (or cvf.diff-2.0.33+fat32-0.2.8 - depending on what
        !           156:   you need). Note that the uvfat patches caused a reject file when I tried 
        !           157:   (fs/Makefile.rej), so be sure to check. The problem was because there was
        !           158:   autofs added in Linux 2.0.31, and plain uvfat is against kernel 2.0.28. 
        !           159:   Just add the text uvfat to the list in Makefile, and it works. As far as 
        !           160:   I know, there's no uvfat update for newer (2.1.xx with xx>80) kernels.
        !           161: 
        !           162:   Okay, step by step, this is what I have done, and it worked for me:
        !           163: 
        !           164:   1. Get linux 2.0.33 sources and unpack.
        !           165:   2. Patch in linux-2.0.28-uvfat-0.1.diff.
        !           166:   3. Repair the rejected file fs/Makefile.
        !           167:   4. Patch in cvf.diff-2.0.33.
        !           168:   5. Patch in this patch.
        !           169: 
        !           170: kerneld-autoload.diff
        !           171: 
        !           172:   This diff has been removed because it is obsolete. Use the updated cvf.c
        !           173:   files instead (see file cvf.c.README).
        !           174: 
        !           175: in-kernel-2.0.35.diff
        !           176: 
        !           177:   This diff can be used to compile dmsdos as a fix part of the kernel.
        !           178:   It hangs dmsdos into some of the kernel initialization files. If you want
        !           179:   to compile dmsdos as a fix part of the kernel, apply this patch, then
        !           180:   create a directory linux/fs/dmsdos, copy the dmsdos sources from src into 
        !           181:   that directory, replace the Makefile with 'Makefile.kernel', and create a
        !           182:   link 'dmsdos-config.h' pointing to the generic kernel config include file
        !           183:   'linux/include/linux/config.h' If you want a working help subsystem just 
        !           184:   append the dmsdos Configure.help file to that one in the kernel. All of 
        !           185:   that should be done automatically by the script 'in-kernel.sh' so just take 
        !           186:   a look at it for details :) The script additionally avoids copying 
        !           187:   unnecessary files.
        !           188: 
        !           189:   NOTE: This patch may not work for kernels other than 2.0.35. But changes
        !           190:   are small and easy to understand. I expect that patching the fs/Makefile
        !           191:   fails just in the same way as it fails for the UVFAT patches :) Fix that
        !           192:   by manually adding the word 'dmsdos' to the subdirectory list in that
        !           193:   file.
        !           194: 
        !           195: msdos-rmdir-bugfix.diff
        !           196: 
        !           197:   This is indeed an excerpt from Alan Cox' pre-2.0.36 patches. It fixes
        !           198:   the msdos rmdir bug that can cause filesystem corruption in a msdos
        !           199:   filesystem (and therefore also in a compressed msdos filesystem).
        !           200:   Affected kernels are 2.0.34 and 2.0.35 and all earlier kernels that have
        !           201:   been patched for FAT32 support version 0.2.8. The bug is fixed in 2.0.36.
        !           202: 
        !           203:   The diff just adds two missing braces to the msdos fs source code ...
        !           204: 
        !           205:   I do not know whether 2.1.xx kernels are affected too. Maybe you take a
        !           206:   look at what where the diff adds the two missing braces and verify that
        !           207:   they are there in your kernel sources :)
        !           208: 
        !           209:   In 2.2.x kernels this bug is not present.
        !           210: 
        !           211: fat-truncate-bugfix.diff
        !           212: 
        !           213:   There's a design flaw somewhere in the kernel or in the FAT driver (I
        !           214:   really cannot say where) that can write to a disk though the device is 
        !           215:   mounted read-only. It is triggered at least by damaged directory entries 
        !           216:   on a FAT partition. Such damaged directory entries are a rare condition,
        !           217:   but the dmsdos driver may leave them around when finding another problem
        !           218:   and setting the filesystem to read-only mode. This bug can destroy any
        !           219:   FAT based filesystem that has damaged directory entries.
        !           220: 
        !           221:   The bug is at least present in kernels up to 2.0.36 from the 2.0 series
        !           222:   and in all kernels in the 2.1 series. Also it is in 2.2.x up to 2.2.2. For 
        !           223:   newer kernels I don't know. As always with bugfixes: take a look at the 
        !           224:   diff and the kernel sources ... :)
        !           225: 
        !           226:   This bug has not yet been fixed in official kernels (kernel 2.2.2).
        !           227:  
        !           228: vfat-brelse-bugfix.diff
        !           229: 
        !           230:   There is a serious bug in the vfat driver (calls to brelse instead of
        !           231:   fat_brelse) that makes the system corrupt internal filesystem buffer
        !           232:   lists. (The bug bypasses the CVF-FAT interface and also causes problems
        !           233:   with filesystems that use a non-512 byte sector size [very rare condition
        !           234:   today].) It has only been reported to affect 2.2.x kernels, but late 2.1.x
        !           235:   kernels may have this bug too. Check the source code. As of kernel 2.2.2,
        !           236:   it has not yet been fixed in official kernels.
        !           237: 
        !           238:   The bug is not present in 2.0.x kernels.
        !           239: 
        !           240: linux-2.2.13-dmsdos.patch-1
        !           241: 
        !           242:   Simple fix to fat_add_cluster1 to return non-NULL pointer to
        !           243:   first buffer-head of newly allocated cluster.
        !           244: 
        !           245: linux-2.3.30-pre6-dmsdos.patch-1
        !           246: 
        !           247:   Many changes needed to enable basic DMSDOS functionality
        !           248:   without MMAP support for 2.3.30-pre6
        !           249:   It contains 
        !           250:   - simple fix to fat_extend_dir to return non-NULL
        !           251:     pointer to first buffer-head of newly allocated cluster
        !           252:   - fixes to fat read super - cvf_format must be set before
        !           253:     cvf_mount is called.
        !           254:   - cvf struct type fixes
        !           255: 
        !           256: 
        !           257: --------------------------------------------------------------------------
        !           258: 
        !           259: Well, are there other useful extensions for the fat based filesystems
        !           260: that should be checked whether they work with CVF-FAT ? Just let me know.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.