* ? ? ? Andrey Borzenkov <arvidjaar@mail.ru> ?.?.?

* Sun 18 Jan 2004 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.11a

  - fix "auto" option. Simplification of option processing turned
    out to be a mess :( Reported by Bart

* Mon 29 Dec 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.11

  - move test for device offline in sd.c to the top in attempt
    to fix USB removale problem

  - simplify options processing

* Sun 23 Nov 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.10

  - remove cdrom "open failed" message (it is now under
    CDROM_OPEN flag like all others in cdrom_open).

  - fix deadlock on double mount. get_sb_bdev called bdev->release
    while holding sb->s_umount and supermount_usage_count in ->release
    tried to do sb_get that tried to down_read(sb->s_umount).

    The fix adds flag to struct block_device to mark it supermounted
    (like 2.6 does).

* Mon 27 Oct 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.9a

  - update for 2.4.23-pre8 (drivers/ide/ide.c
    s/get_info_ptr/ide_info_ptr/)

* Sat 23 Aug 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.9

  - fix "Stale NFS handle" for mountpoint without mounted media (reported
    by Danny Tholen). This was introduced in 1.2.8 together with change
    of behaviour on unmounted subfs. Now d_revalidate always returns
    valid for root unless subfs tells different.

  - /proc/fs/supermount/version is read-only, do not set permissions to
    rw

  - explicit <linux/init.h> is needed in init.c on ppc and possibly
    other archs (it was implicitly included on i386). Reported by
    Danny Tholen

* Sun 13 Jul 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.8

  - hush most unused variables warnings with CONFIG_DEBUG (idea
    suggested by Jeff Garzik)

  - replace ugly SUPERMOUNT_TARCE_{ENTER,LEAVE}[_ARGS] with ENTER/LEAVE
    Use %p throughout for pointer output.

  - add ENTER/LEAVE macros as they slipped in while merging last
    changes from 2.5 branch

  - send DN_CREATE for root on mount

  - allow open and readdir on mountpoint even if subfs is unmounted.
    This provides for active monitoring by FAM/dnotify and is overall
    less surprising - ls /mnt/cdrom just returns empty directory now
    instead of error. For technical reasons ->flush and ->permissions
    need be aware about it too.
 
    Files opened while subfs is unmounted are NOT usable for anything
    except readdir even AFTER subfs gets mounted. So application
    has to reopen directory to rescan it. AFAIK all of them do it :)
 
* Mon 23 Jun 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.7a

  - fix SUPERMOUNT_BUG_LOCKED_ON without SUPERMOUNT_DEBUG

  - added warning about multipartition devices and media management

  - added example fstab entry and warning about using real file names
    for bdev to supermount.txt

  - remove new_subfs_dentry - it is not used anymore and comments
    there were wrong anyway

* Tue 27 May 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.7

  - (re-)set root inode flags after unmounting subfs

  - fix mounting of ro media on rw filesystem. It was broken  by fix
    in 1.2.4. Remove saved s_mflags and just use real sb->s_flags.
    Reported by Con Kolivas
    
  - do not use MS_MGC_VAL in subfs_real_mount - it is not used anywhere
    in kernel and all lower bits are already taken in 2.5

  - configure help from Marc-Christian Petersen

  - use subsb->s_bdev instead of looking up using s_dev. This also
    fixes problem with O(1) patch (bug 737783)

* Wed 14 May 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.6

  - check for correct inode in attach_subfs_inode - if super inode
    has subinode attached it must be the same as is currently
    resuested. Else it is a bug.

  - use lookup_one_len to lookup subfs dentry in cache; check if
    subfs did not change name and lookup "real" dentry in parent
    cache in this case. This finally puts an end to the attempt to
    control subfs dcache. The only thing we rely upon now is that
    nothing can change directory contents while in lookup method.

  - implement d_hash and d_compare to properly support case-
    insensitive filesystems (vfat & Co).
  
  - reset super inode i_mapping so it does not point to freed
    subinode mapping when unmounting subfs

  - send dnotify_parent on dentry cleanup, not on inode

  - use write_inode_now in ->write_inode. Reading intricated flags
    manipulations in fs/inode.c was just too intimidating. It is not as
    much overhead as it looks like - it is called from sync_one only
    so all dirty pages are scheduled to be flushed anyway.

* Sun 04 May 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.5

  - enable dentries caching; properly use d_add when dentry is first
    looked up and d_instantiate when inode is finally available.

  - first stab at sending notifications on media umount/mount

  - more caveats :(

* Sat 26 Apr 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.4

  - fix write_inode/prepare_inode deadlock. It looked like
  	set I_LOCK
			down(&sbi->sem);
			iget4 -> wait_on_inode
	down(&sbi->sem)

  - MS_ACTIVE was reset on subfs remount

  - print process PID in trace

  - adjust directory structure to make patch generation easier

* Sun 20 Apr 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.3

  - dummy version due to script problems

* Sun 20 Apr 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.2
  
  - remove #ifdef CONFIG_PROC_FS from init.c, it already exists in
    supermount.h

  - no_tray_lock -> TRAY_LOCK_NEVER. Just to make sure it remains
    compatible (even if it is very unlikely anybody is using it).

  - backout kernel stat patch; remove getattr alltogether. It fixed
    fuser -m for stale files. getattr remains uniplemented because
    it does not seem to be used anywhere in kernel at all so I am not
    actually sure how to implement it

    It also backouts 10_readlik and 30_lseek as they are not used
    anymore for a long time.

  - remove bogus check for sub- and superinodes i_count. i_count is
    outside of supermount control; the only thing that we must be
    sure in - inode is free on umount.

  - reset root inode attributes and operations on umount. This fixes
    the problem of attempt to mount media on ls -l /mnt after subfs
    has been mounted once.

  - remove ->stale. For all practical purposes an entity is stale iff
    it does not (yet) have associated subfs entity. Creating yet another
    field that just mirrors this condition does not add a single bit
    of useful information.

  - subfs_is_busy iff subfs mnt_count > 1

* Sat 05 Apr 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.1

  - fixed stupid thinko in mediactl methods (the effect was it was
    impossible to manually eject ro media). It was exposed by recent
    changes. No changes in supermount itself only in driver code

  - replace no_tray_lock with tray_lock={never,onwrite,always} with
    "onwrite" being default. I stil do not quite like resulting code
    but it will do for now.

  - simplified subfs_(get|put)_(write|read) interface; merge both
    read/write in one function; remove subfs_get_atime. To my surprise
    it resulted on more clean interface in the rest of supermount even
    if subfs_(get|put)_access does look a bit weird.

* Sun 30 Mar 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.2.0

  - changed proc command format to
    <devname> [enable|disable] [release [force]]

  - add /proc/fs/supermount/version; printk version on starup only
    if procfs is not configured.

  - unify media lock rules for thosed drivers using implementing
    mediactl (cdrom, sd, ide-floppy as of this writing). Lock
    media for both manual and software eject; do not unlock media
    that is in used by something else.

  - added show_options method to super.c

  - implemented /proc/fs/supermount/subfs read as seq_file

* Sat 29 Mar 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.1.4

  - supermount_rename leftover - it does not need new_subfs_dentry.
    It still worked because new dentry was destroyed immediately, but
    let's do it the right way. Also mark target rw if exists

  - propagate S_IMMUTABLE, S_NOATIME and S_APPEND flags from subfs
    to super inode. Filesystems usually rely on VFS to check these
    flags which means it was possible to overwrite immutable file. Also
    needed for atime management (to be added).

  - added atime management. It is based on grep UPDATE_ATIME so it may
    be incomplete; still it gives right results in most obvious cases :)
    It respects no(dir)atime mount flag.

  - Make sure super inode times and sizes are updated to reflect subfs
    inode. Done in preparation to remove stat kernel patch. Only those
    fields needed by stat are updated.

  - remove assertion subi->i_count == 1 from clear_inode. Subfs icache
    is managed independently and there is no lock (as opposed to dentry
    case where we never do cached lookup for subfs).

  - use inode cache for supermount inodes to avoid linear search. This
    moves almost the whole inode creation task into read_inode2 - the
    only place where inode needs to be created is root inode.

    We use inode numbers from subfs; root inode is never cached until
    subfs has been mounted. Stale inodes are removed from cache in
    clean_inodes (just like dentries are in clean_dentries) so aliasing
    problem is solved.

  - add "disabled" state - prevent any attempt to mount media

  - add procfs support. Reading /proc/fs/supermount/subfs will return
    list of subfs and their status. Writing into it allows you to
    control status of subfs (mounted/unmounted, enabled/dusabled)

  - fix race in clear_inode. It was possible that subfs was umounted
    after inode has been removed from list but before its access
    counters were cleared. The code that checkes for that exists only
    for debugging still I'd like it to be useful.

* Sun 16 Mar 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.1.3

  - add CVS verion Id's to files

  - finally get rid of ugly generation number. It is enough to just
    mark entity obsolete; we do not care actually when it happened.
    Now every entity starts out stale; stale flag is reset when subfs
    object is attached; stale flag is set again for the rest of life
    in subfs_umount

  - as a side effect read/write count is associated with inodes
    exclusively

  - clear_inode and d_iput need prevent/allow umount to avoid "stealing"
    subfs while holding active entities. File release is safe as VFS does
    nou put mnt until _release is finished.

  - subfs_prevent_umount does not need validator. The worst thing that
    can happen is that newly mounted subfs is accessed. That does not
    matter, access to subfs object is checked for validity separately in
    every case.

  - finally clarify dcache management. As we cannot garantee coherency
    between sub- and super- fs caches we ignore subfs cache entirely.
    Super dentry is instantiated in supermount_lookup and passed around
    with subfs dentry attached. It does not matter if it is positive or
    negative. Currently dentries are forced to be deleted in
    supermount_d_delete but I believe it is not really needed.

  - print version number on registering filesystem to facilitate debugging

  - umount subfs as soon as possible in check_disk_change. This eliminates
    zombie state (mounted but inactive due to media change detected).

  - kill subfs_is_active, it is the same as subfs_is_mounted now.

  - kill translations.c it does not do anything special now; move functions
    in file/dentry/namei

  - fix stupid bug in get_supermount_inode again - super inode must
    be inited and attached just once not every time.
    Praise assertions again :)

* 10 Mar 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.1.2

  - allow fs=type1:type2:...

  - remove supermount_drop_dentries (no more used)

  - add some more assertions to subfs_umount

* 10 Mar 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.1.1

  - fix stupid bug in subfs inode refcounting. It was visible with
    hardlinks only so CD-ROM users would not ever see it.

  - fix even more stupid bug in unlink - subi was used instead of superi

* 8 Mar 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.1.0

  - files cannot use inode obsolete flag - it does not work for
    root inodes

  - make file system structure exact mirror of subfs - now there
    is 1-to-1 correspondence between super- and subfs files, dentries
    and inodes. This is needed to properly manage write access without
    too much locking

  - finally realized that subfs cannot be obsolete; use either file
    or inode pointer in all calls into subfs.c to check for freshness

  - debug is now per-mount; added trace of all functions
  
  - move setting of SUPERMOUNT_DEBUG to Makefile instead of supermount_i.h

* 1 Mar 2003 Andrey Borzenkov <arvidjaar@mail.ru> 1.0.0

  - make sure it is always possible umount subfs. It does it by
    keeping list of opened files (in addition to inodes) and closing
    them if media change is detected.

  - make sure subfs can't go away while it is being in use. For
    files it get_file for subfile to ensure subfs mnt is not freed. For
    inode operation it increments usage counter of submnt for duration
    of operation.

  - make sure supermounted device can't be mounted twice (that is
    allowed by kernel) because it relies on being the only "owner" of
    subfs. It does it by checking for MS_SUPERMOUNTED flag on mount.

  - make sure you can't mount over supermounted directory. Allowing
    it is a nightmare and I cannot see any reason for it (if you can
    provide valid one - I may reconsider this part). It does so by
    adding fstype flag and checking it on mounting.

  - reject mount -o remount for the time being (until we can deal
    with it properly)

  - completely change implementation of individual inode methods.
    Instead of calling VFS recursively it calls subfs methods directly.
    It is to ensure we are in full control of subfs (assuming it behaves
    properly :)

  - properly implement VM methods. Currently changing media would
    leave you with vm_area pointing to no more existing inode ...

  - remove many obsolete pieces like flags that just duplicate
    existing information.

  - ensure coherency between super- and subfs dentries. Either we
    have both active in dcache or do not have them at all.

  - fixe the problem with media ejection after direct access to CD-ROM

  - add "just disc change" to all operations to detect media change
    as soon as possible. It is possible to add option to do it just
    for writable media or to completely turn it off.
