o bugfix
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + new member ii_nfsd_readdir in struct au_iinfo.
  + new structure au_nfsd_readdir_pid.
  + new functions au_nfsd_readdir_(alloc|free|reg|unreg),
    au_nfsd_do_read_lock(), au_nfsd_read_lock() and
    di_nfsd_read_lock_parent().
  + new function di_nfsd_read_lock_parent().
  + new abstract function au_nfsd_read_lock().
  + in aufs_encode_fh(), support the in-readdir status by
    au_nfsd_read_lock().
  + in aufs_d_revalidate(), when the dentry is the readdir-ed itself and
    cannot get the write-lock, returns 'invalid' and forces re-lookup.
  + in aufs_getattr(), support the in-readdir status by
    au_nfsd_read_lock().
  + in aufs_lookup(), support the in-readdir status by
    di_nfsd_read_lock_parent().
  + free ii_nfsd_readdir in au_iinfo_fin().
  + stop calling lockdep_off/on().
- bugfix: under heavy load the dead inode might be re-used because of
  the race condition between S_DEAD flag and some lock-free oprations.
  force 'must-new' inode in some cases.
  + add a parameter 'must_new' for au_new_inode().
  + set S_DEAD flag in aufs_unlink() and aufs_rmdir().
  + set S_DEAD flag in aufs_rename().
  + test the S_DEAD flag in reval_inode().
- bugfix: force nosubtreecheck for a branch.

o news
- new helper script 'auchk' which behaves like 'fsck' for aufs branch.
- replace the automatic configuration CONFIG_AUFS_HIN_OR_FUSE by
  CONFIG_AUFS_GETATTR, and support nfs branch too.
  + rename hin_or_fuse.c to getattr.c.
  + always force the real getattr operation for nfs branch.
- new debug configuration CONFIG_AUFS_DEBUG_LOCK.
  + show the lock status when MagicSysRq key is pressed.
  + new member si_dbg_lock in struct au_sbinfo.
  + new functions au_dbg_(locking|locked)_di_(reg|unreg),
    au_dbg_lock_ii_(reg|unreg).

o misc
- refine some functions au_wkq_run(), au_wkq_wait() and au_wkq_nowait().
  + move au_wkq_wait() from wkq.h to wkq.c.
- test the kernel thread instead of trylock.
  + new function au_test_nowait_wkq().
- revise au_nwt_done() simply.
- test the kernel thread instead of trylock.
- use ZERO_PAGE().
  + for older version, new abstract functions au_zp_alloc/free().
- new generic structure au_splhead and au_spl_init() for it.
- insert minor debug functions mutex_destroy() and au_rwsem_destroy().
  + new debug macro au_rwsem_destroy().


Junjiro R. Okajima

----------------------------------------------------------------------
Index: Kconfig.in
- replace the automatic configuration CONFIG_AUFS_HIN_OR_FUSE by
  CONFIG_AUFS_GETATTR, and support nfs branch too.
- new debug configuration CONFIG_AUFS_DEBUG_LOCK.

Index: README
Index: util/aufs.in.5
Index: util/auchk
- new helper script 'auchk' which behaves like 'fsck' for aufs branch.

Index: local.mk
- replace the automatic configuration CONFIG_AUFS_HIN_OR_FUSE by
  CONFIG_AUFS_GETATTR, and support nfs branch too.
- new debug configuration CONFIG_AUFS_DEBUG_LOCK.
- new helper script 'auchk' which behaves like 'fsck' for aufs branch.

Index: fs/aufs/Makefile
Index: fs/aufs25/Makefile
Index: fs/aufs/sysaufs.c
Index: fs/aufs25/sysfs.c
- replace the automatic configuration CONFIG_AUFS_HIN_OR_FUSE by
  CONFIG_AUFS_GETATTR, and support nfs branch too.
  + rename hin_or_fuse.c to getattr.c.

Index: fs/aufs/branch.c
Index: fs/aufs25/branch.c
Index: fs/aufs/finfo.c
Index: fs/aufs25/finfo.c
Index: fs/aufs25/sbinfo.c
- insert minor debug functions mutex_destroy() and au_rwsem_destroy().

Index: fs/aufs/debug.c
Index: fs/aufs25/debug.c
- new debug configuration CONFIG_AUFS_DEBUG_LOCK.

Index: fs/aufs/debug.h
Index: fs/aufs25/debug.h
- new debug configuration CONFIG_AUFS_DEBUG_LOCK.
  + new functions au_dbg_(locking|locked)_di_(reg|unreg),
    au_dbg_lock_ii_(reg|unreg).

Index: fs/aufs/dentry.c
Index: fs/aufs25/dentry.c
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + in aufs_d_revalidate(), when the dentry is the readdir-ed itself and
    cannot get the write-lock, returns 'invalid' and forces re-lookup.
- insert minor debug functions mutex_destroy() and au_rwsem_destroy().

Index: fs/aufs/dentry.h
Index: fs/aufs25/dentry.h
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + new function di_nfsd_read_lock_parent().

Index: fs/aufs/dinfo.c
Index: fs/aufs25/dinfo.c
- new debug configuration CONFIG_AUFS_DEBUG_LOCK.
  + call au_dbg_(locked|locking)_di_(reg|unreg).

Index: fs/aufs/dir.c
Index: fs/aufs25/dir.c
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + call au_nfsd_readdir_(alloc|reg|unreg).
  + stop calling lockdep_off/on().

Index: fs/aufs/dir.h
Index: fs/aufs25/dir.h
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + new structure au_nfsd_readdir_pid.
  + new functions au_nfsd_readdir_(alloc|free|reg|unreg),
    au_nfsd_do_read_lock(), au_nfsd_read_lock() and
    di_nfsd_read_lock_parent().

Index: fs/aufs/export.c
Index: fs/aufs25/export.c
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + new functions au_nfsd_readdir_(alloc|free|reg|unreg|test) and
    au_nfsd_do_read_lock().
  + stop calling lockdep_(off|on)().
  + in aufs_encode_fh(), support the in-readdir status by
    au_nfsd_read_lock().
- bugfix: force nosubtreecheck for a branch.

Index: fs/aufs/getattr.c
Index: fs/aufs/hin_or_fuse.c
Index: fs/aufs25/getattr.c
Index: fs/aufs25/hin_or_fuse.c
- replace the automatic configuration CONFIG_AUFS_HIN_OR_FUSE by
  CONFIG_AUFS_GETATTR, and support nfs branch too.
  + rename hin_or_fuse.c to getattr.c.
  + always force the real getattr operation for nfs branch.
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + in aufs_getattr(), support the in-readdir status by
    au_nfsd_read_lock().

Index: fs/aufs/i_op.c
Index: fs/aufs25/i_op.c
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + in aufs_lookup(), support the in-readdir status by
    di_nfsd_read_lock_parent().
- bugfix: under heavy load the dead inode might be re-used because of
  the race condition between S_DEAD flag and some lock-free oprations.
  force 'must-new' inode in some cases.
  + add a parameter 'must_new' for au_new_inode().
- replace the automatic configuration CONFIG_AUFS_HIN_OR_FUSE by
  CONFIG_AUFS_GETATTR, and support nfs branch too.

Index: fs/aufs/i_op_add.c
Index: fs/aufs25/i_op_add.c
- bugfix: under heavy load the dead inode might be re-used because of
  the race condition between S_DEAD flag and some lock-free oprations.
  force 'must-new' inode in some cases.
  + add a parameter 'must_new' for au_new_inode().

Index: fs/aufs/i_op_del.c
Index: fs/aufs25/i_op_del.c
- bugfix: under heavy load the dead inode might be re-used because of
  the race condition between S_DEAD flag and some lock-free oprations.
  force 'must-new' inode in some cases.
  + set S_DEAD flag in aufs_unlink() and aufs_rmdir().

Index: fs/aufs/i_op_ren.c
Index: fs/aufs25/i_op_ren.c
- bugfix: under heavy load the dead inode might be re-used because of
  the race condition between S_DEAD flag and some lock-free oprations.
  force 'must-new' inode in some cases.
  + set S_DEAD flag in aufs_rename().

Index: fs/aufs/iinfo.c
Index: fs/aufs25/iinfo.c
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + new member ii_nfsd_readdir in struct au_iinfo.
  + free ii_nfsd_readdir in au_iinfo_fin().
- insert minor debug functions mutex_destroy() and au_rwsem_destroy().

Index: fs/aufs/inode.c
Index: fs/aufs25/inode.c
- bugfix: under heavy load the dead inode might be re-used because of
  the race condition between S_DEAD flag and some lock-free oprations.
  force 'must-new' inode in some cases.
  + test the S_DEAD flag in reval_inode().
  + add a parameter 'must_new' for au_new_inode().

Index: fs/aufs/inode.h
Index: fs/aufs25/inode.h
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + new member ii_nfsd_readdir in struct au_iinfo.
- bugfix: under heavy load the dead inode might be re-used because of
  the race condition between S_DEAD flag and some lock-free oprations.
  force 'must-new' inode in some cases.
  + add a parameter 'must_new' for au_new_inode().
- replace the automatic configuration CONFIG_AUFS_HIN_OR_FUSE by
  CONFIG_AUFS_GETATTR, and support nfs branch too.
  + rename hin_or_fuse.c to getattr.c.
- new debug configuration CONFIG_AUFS_DEBUG_LOCK.
  + call au_dbg_lock_ii_(reg|unreg).

Index: fs/aufs/misc.c
Index: fs/aufs25/misc.c
- use ZERO_PAGE().
  + for older version, new abstract functions au_zp_alloc/free().

Index: fs/aufs/misc.h
Index: fs/aufs25/misc.h
- new generic structure au_splhead and au_spl_init() for it.
- insert minor debug functions mutex_destroy() and au_rwsem_destroy().
  + new debug macro au_rwsem_destroy().

Index: fs/aufs/super.c
Index: fs/aufs25/super.c
- test the kernel thread instead of trylock.
- insert minor debug functions mutex_destroy() and au_rwsem_destroy().

Index: fs/aufs/super.h
Index: fs/aufs25/super.h
- new debug configuration CONFIG_AUFS_DEBUG_LOCK.
  + new member si_dbg_lock in struct au_sbinfo.
- bugfix: NFSD issues another operation during filesystem's readdir(),
  and it may cause a deadlock in aufs. check the current context is in
  readdir().
  + new abstract functino au_nfsd_read_lock().

Index: fs/aufs/sysrq.c
Index: fs/aufs25/sysrq.c
- new debug configuration CONFIG_AUFS_DEBUG_LOCK.
  + new functions au_dbg_(locking|locked)_di_(reg|unreg),
    au_dbg_lock_ii_(reg|unreg).
  + show the lock status when MagicSysRq key is pressed.

Index: fs/aufs/wkq.c
Index: fs/aufs25/wkq.c
Index: fs/aufs/wkq.h
Index: fs/aufs25/wkq.h
- refine some functions au_wkq_run(), au_wkq_wait() and au_wkq_nowait().
  + move au_wkq_wait() from wkq.h to wkq.c.
- test the kernel thread instead of trylock.
  + new function au_test_nowait_wkq().
- revise au_nwt_done() simply.

Index: fs/aufs/cpup.c
Index: fs/aufs25/cpup.c
Index: fs/aufs/hinode.h
Index: fs/aufs25/hinode.h
Index: fs/aufs/hinotify.c
Index: fs/aufs25/hinotify.c
Index: include/linux/aufs_type.h
- less important changes.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/

Reply via email to