/* * SDPL Changelog: Changes are to be reported here. * * Copyright (C) 2001, 2002, Jocelyn MAYER * * Permission is granted to copy, distribute and/or modify this document * under the terms of the GNU Free Documentation License, Version 1.1 * or any later version published by the Free Software Foundation; * with no Invariant Sections with Front-Cover Texts being TITLE, * and noBack-Cover Texts. * A copy of the license is included in the section entitled "GNU * Free Documentation License". */ TITLE: /* * Simple Disk Partition Layer * * Documentation: Changelog * */ CHANGES: ------------------------------------------------------------------------------- Version 0.9: * Add new helper: sdpl_realloc * Add a new field in layer's MBR information: data_offset This is the offset from the start of the layer to find the first data bloc. * Put a set of edit functions in a separate module (edit.c) to make them avaible in user-space and kernel-space library. * Make layer saving functions avaible in kernel space. * Split ioctl routine in three parts in the kernel module: - The legacy ioctl call - One routine for operations on layers. - One routine for operations on partitions. * Add new ioctls to add and remove bloc to/from a partition * Add ioctls to manipulate flags in blocs & partitions * Fix SDPL_SET_ACCESS ioctl: update blocs and partition flags. * Put SDPL_map and real device reference from SDPL_device structure to layer structure to be more coherent * Fix "unused ..." warnings * Add new utilities: - sdplcalc to estimate the best bloc size to use for a new layer - sdplbuild to build a layer, given a set of loop devices 24-01: Make a new parser, more generic... Fixed for embedded case. File format has been documented - sdplextract to extract a partition from a layer. Very useful to check the work done by sdplbuild. * Fix device name to /dev/sl when not using devfs to prevent the kernel to be confused with sd (SCSI) devices * Force CONFIG_BLK_SPDL_EDIT in kernel mode. * Export proc fs function when compiled in the kernel (ie not module), so we can apear in /proc/partition (this feature needs a kernel patch, not yet included) * Fix macros definitions in all cases. * Add a real write_dev_sector function in kernel space * Fix prototype for all save relatives functions to match the one used by write_dev_sector * Don't force procfs and devfs not to be used in embedded case * Include all files from linux include directory by default * Add BLKGETSIZE ioctl for medium (layer) devices. * Fix missing commits in ioctls * Various bugfixes in kernel space. * Fix a bug in read_dev_sector for kernel version < 2.4.10 * Fix reserved size retrival from MBR infos. * Don't propagate bootable flag on blocs. * Don't use test_sector when writing, in embedded compiled module (we know that all datas go in the MBR) * BLKFLSBUF, BLKGETSIZE, SDPL_GET_ACCESS, SDPL_ATTACH, SDPL_DETACH, SDPL_GET_BOOTABLE, SDPL_SET_BOOTABLE, SDPL_GET_BLOCK_ACCESS ioctls have been tested. * BLKRASET, BLKRAGET won't be supported for now. * Add private flags and new ioctls: SDPL_GET_PRIVATE_FLAGS and SDPL_SET_PRIVATE_FLAGS * Add useful ioctls: SDPL_GET_BLOCSIZE, SDPL_GET_RESSIZE and SDPL_GET_NUMPARTS * Fix in MBR structure. * Reduce warnings at compile time. ------------------------------------------------------------------------------- Version 0.8: * Added configuration interface for standalone compilation using the Config.in file required in the kernel patch. * Add configuration target in the Makefile and improve compilation flags, rules... * Fixed read_dev_sector function and get_parts_infos prototype for kernel version < 2.4.10 * Reunified low level routines and debug kernels < 2.4.10 suppport. * Fix put_dev_sector and prototypes in sdpllib.h * Fix min and max for 2.4.9 kernel. * Don't allow 64 bits support for kernel < 2.4.10 * Fix debug mode definition via configuration interface and no permission checking when using User Mode Linux. * Add a layer structure to make sdpl.c cleaner * Move quite all macros from sdpl.c to sdpl.h * Start grouping all stuffs concerning procfs * Same thing going on for devfs... * Add new macros to remove a lot of #if ... #endif * Fix some buggy locks * Put together all devfs support functions * Put together all boot support stuffs. * Fix use of Read-Only flags for individual blocs * Prepare use of unified zlib in kernel * Always check adler32 checksum on boot sector * Actualize object size in FAQ ------------------------------------------------------------------------------- Version 0.7: lots of cosmetics and debug. * Reorganize library code into more modules, so the code produced after link is smaller. Also rename libdump.c into dump.c. * Changed defines to be more Linux kernel compliant: - SDPL_EMBEDDED becomes CONFIG_BLK_SDPL_EMBEDDED - SDPL_DEBUG becomes CONFIG_BLK_SDPL_DEBUG - HAS_64_BITS_SUPPORT becomes CONFIG_BLK_SDPL_64BITS - USE_EDITMODE becomes CONFIG_BLK_SDPL_EDIT * Add more /* CONFIG_... */ on #else and #endif * Make 64 bit support with glibc cleaner. * Removed unneeded sdpledit.h * Fix low level read/write API * Removed some global variables. * Moved all write routines form sdpledit.c to a new library module named write.c * Moved all read routines from sdpllib.c to a new module called read.c * Improve backward compatibility down to 2.4.0 kernel. * Removed ??? that could be interpreted as trigraphs. * Changes Documentation License to GFDL. * Put read.c license to LGPL. This is strategic: this code is to be used in BIOSes, for example, and as far as I know, most of the BIOSes (exept freebios and linuxbios) are non-free software. * Rename COPYING to COPYING_GPL and add LGPL and FDL license infos * Fixed a Makefile BUG: default compiler should gcc, not gcc -V 2.95.3 Also fix ldflags to link non-embedded tools with zlib + Fix kernel module (read part was missing) * Add a new feature to sdpledit: can mark a partition bootable + update layer version when saving it. * Fix bug in DEBUG version of sdpldump * Fix lock management: avoid deadlocks - Can open many layers at the same time - Can use a layer created inside another one * Fix various problems in kernel module: - no more undefined symbols - Fix memory leaks. - Avoid possible lock with underlaying device. - Flush buffers when needed. * Fix bug in sdplmount * Fix NO_PERM_CHECK flag * Fix SDPL_CHECK ioctl definition. * Fix read_dev_sector function use: this function isn't static in the kernel, but isn't exported for modules. So I need to redefine it when compiled as module... * Update Changelog and TODO list ------------------------------------------------------------------------------- Version 0.6: First COMPLETE Beta version: * Kernel module: - I found the way to make it BOOTABLE !!! Without using initrd or loop devices... - Fix API to be able to: * Merge kernel & user space library code. * Change sdpldump / sdpledit to use the same API than the one used by the kernel at boot time to access the underlaying bloc device * Added libdump.c which contains functions only used to debug / display messages about the layers. * Added fake.c with a fake interract function for sdpldump * Cleanups in header includes in almost all the code. * shrink sdplmount. * Makefile: make things cleaner and more readable * Update Documentation ------------------------------------------------------------------------------- Version 0.5.2: * All modules: - Add license informations. * Remove unused file: sdpluser.h * sdpllib.c & Makefile: - Minor fixes for compilation * Kernel module: - Changes to make it bootable. Not totally fixed yet. - Try to find ways to reduce embedded version footprints * Reflect changes into documentation. ------------------------------------------------------------------------------- Version 0.5.1: * sdpldump: - Fixed crash. It was a synamic library problem. For now, build it as static... * Kernel module: - Fixed embedded version. Now fully compatible with complete one - Succeeded to make a 4088 embedded kernel module functional. - BLKGETSIZE ioctl seems to be all right, as I succceed to make filesystems with the right size... - BLKFLSBUF seems all right too, because I lose no datas when unmounting a device. ------------------------------------------------------------------------------- Version 0.5: * sdpledit: - Fixed embedded bug. * sdpldump: - Remove device size force. * Kernel module: - Fixed make_request function: fixed device size + "forget" block size / sector size (as loop devices do) - Create /proc/sdpl interface - Fix bad sdpl_dev allocation - Make dump routines conditionnal / SDPL_DEBUG - Fix size check when getting blocs for a partition - Fix potential bug in free_device - Fix: fput file after use to free it. - Cleanups in included headers - Fix message print macros ------------------------------------------------------------------------------- Version 0.4: A lot of changes and fixes !!! * Makefile: - Fix it to link modules with gcclib to avoid "unresolved symbol: udiv3" - Don't make kernel library, as I don't mmap the device anymore in the kernel space - Add a new utility; sdplmount * Kernel module: - make device allocation dynamic. - Put back libraries functions in the module - Don't use mmap anymore in kernel space - Free structures correctly during module cleanup - Open / close function are functional - SDPL_ATTACH / SDPL_CHECK / SDPL_DETACH works well. - request function doesn't crash, but there's still a problem with it... * sdpldump: - Added -k option: uses SDPL_CHECK ioctl to dump informations ------------------------------------------------------------------------------- Version-0.4-pre2: Remove unnedded char device Added map ioctl Added unmap ioctl ------------------------------------------------------------------------------- Version 0.4-pre1: Fix RO/RW flags bug Fix bad offset in MBR header Fix Version printing Fix and publish bloc device part of kernel module Import adler32 (CRC) function from zlib for kernel module Link kernel module with sdpl kernel library and adler32 ------------------------------------------------------------------------------- Version 0.3: Documentation updates. Added this file, FAQ and SDPL_API.txt. Minor fix in Makefile. No code update. ------------------------------------------------------------------------------- Version 0.2: First usuable editor. Seems to be allright in all modes. The Ro/RW flag are buggy. ------------------------------------------------------------------------------- Version 0.1: First buggy version of 16 bits editor. DON'T USE !!! -------------------------------------------------------------------------------