[SSI] openssi ChangeLog,1.241,1.242
Roger Tsang <[email protected]>
| Newsgroups | gmane.linux.cluster.ssic.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/ssic-linux/openssi
In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4493
Modified Files:
Tag: OPENSSI-FC
ChangeLog
Log Message:
Update
Index: ChangeLog
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/ChangeLog,v
retrieving revision 1.241
retrieving revision 1.242
diff -u -d -r1.241 -r1.242
--- ChangeLog 2 Nov 2009 03:55:00 -0000 1.241
+++ ChangeLog 17 Nov 2009 06:39:45 -0000 1.242
@@ -1,11 +1,61 @@
2009/??/?? *** Release of OpenSSI 1.9.6 ***
+2009/11/17 rogertsang <[email protected]>
+ * MOSIX:
+ - Fix acquiring loadinfo_lock without disabling bottom half. Actually in
+ OpenSSI we don't need to disable bottom half for loadinfo_lock, but we
+ are doing this for compatiblity with openMosix code. Eventually we
+ should clean this up for OpenSSI.
+ - Fix mosix_task->pages_i_bring race.
+ - Comment unused code.
+
+ * MOSIX (#ifdef SSI_BALANCE_MEMORY):
+ - Fix deadlock bug nesting task_lock() in
+ write_lock_irq(&tasklist_lock).
+ - Remove inappropriate task_lock() for mm_struct->last_memsort, used,
+ swapped.
+ - New mm_struct->memsort_lock spinlock replaces
+ write_lock_irq(&tasklist_lock); protects mm_struct->last_memsort,
+ used, swapped.
+
+ * VPROC:
+ - New separate spinlock for pvp_comm_de, pvp_comm_mnt deprecates
+ task_lock(). (#ifdef VPROC_LOCK_PVP_COMM)
+
+ * Files in ci-linux project were modified (see ci/ChangeLog).
+
+ cluster/ssi/mosixll/balance.c | 44 +++++++++-
+ cluster/ssi/mosixll/freemem.c | 122 +++++++++++++++++++++--------
+ cluster/ssi/mosixll/info.c | 16 +++
+ cluster/ssi/mosixll/kernel.c | 14 ++-
+ cluster/ssi/mosixll/load.c | 10 +-
+ cluster/ssi/util/load_level.c | 35 ++++----
+ cluster/ssi/vproc/dvp_misc.c | 14 +--
+ cluster/ssi/vproc/procfs_subr.c | 3
+ cluster/ssi/vproc/vp_subr.c | 3
+ include/cluster/ssi/mosixll/defs.h | 4
+ include/linux/config.h | 4
+ include/linux/dpvproc.h | 25 +++++
+ include/linux/mosix.h | 4
+ 13 files changed, 229 insertions(+), 69 deletions(-)
+
+2009/11/05 rogertsang <[email protected]>
+ * VPROC:
+ - switch_exec_pids() revert switch vproc pids. glibc tst-exec4 passes
+ and vproc handles are cleaned up properly when we don't switch vproc
+ pids.
+
+ kernel/pid.c | 5 +++++
+ 1 files changed, 5 insertions(+)
+
2009/11/02 rogertsang <[email protected]>
* CFS:
- Split __cfs_lock() into do_getlk(), do_unlk(), and do_setlk().
- Flush data before unlocking. (#ifdef CFS_ZAP_CACHES)
- - Fix VFS lock out of sync with server; take two. (#ifdef CFS_MIRROR_LOCK_WAIT)
- - Fix VFS lock out of sync with server when interrupted. (#ifdef CFS_FLOCK)
+ - Fix VFS lock out of sync with server; take two. (#ifdef
+ CFS_MIRROR_LOCK_WAIT)
+ - Fix VFS lock out of sync with server when interrupted. (#ifdef
+ CFS_FLOCK)
- Comment out unused CXLOCK and related macros.
- Comment out unused in struct cnode.
- Data handlers to use GFP_NOFS flag.
@@ -178,14 +228,18 @@
2009/03/28 rogertsang <[email protected]>
* CFS:
- - Optimize away all directories in cfs_permission() since a recheck occurs after getting token.
+ - Optimize away all directories in cfs_permission() since a recheck
+ occurs after getting token.
- Regression:
- skipping cfs_permission() entirely.
* IPC:
- - Fix [ ssic-linux-Bugs-2719607 ] memory leak in ipcname_gettotal() path; based on patch from John Hughes (hughesj).
- - sizing & allocation of struct ssi_nodeid_pair array now ipcname_gettotal() callers' responsibility.
- - now RPC encodes/decodes struct ssi_nodeid_pair array as a vector and not a buffer.
+ - Fix [ ssic-linux-Bugs-2719607 ] memory leak in ipcname_gettotal()
+ path; based on patch from John Hughes (hughesj).
+ - sizing & allocation of struct ssi_nodeid_pair array now
+ ipcname_gettotal() callers' responsibility.
+ - now RPC encodes/decodes struct ssi_nodeid_pair array as a vector and
+ not a buffer.
cluster/ssi/cfs/dir.c | 6 +-
cluster/ssi/ipc/namesvr_clnt.c | 32 ++++++-------
@@ -202,65 +256,89 @@
2009/03/24 rogertsang <[email protected]>
* CFS:
- - Disable cfs_is_subdir(); redundant and unsafe dereferencing of ancestors. (#ifndef CFS_ZAP_CACHES)
+ - Disable cfs_is_subdir(); redundant and unsafe dereferencing of
+ ancestors. (#ifndef CFS_ZAP_CACHES)
- Fix cfs_rb_delayedunlinks() race with VFS; missing parent i_sem.
- - Optimize away directory i_op->permission cfs_permission(); there is already a recheck after token hold.
- - cfs_sb_start_haves() no longer shrink parent dcache; nodedown should not race with remove/rename in SSI.
- - cfs_rb_do_phase() now requires successful igrab() of superblock root inode before getting MHOLD list.
- - cfs_readdir_filler(), uncached_readdir() set CFS_INO_INVALID_ATIME flag on success.
+ - Optimize away directory i_op->permission cfs_permission(); there is
+ already a recheck after token hold.
+ - cfs_sb_start_haves() no longer shrink parent dcache; nodedown should
+ not race with remove/rename in SSI.
+ - cfs_rb_do_phase() now requires successful igrab() of superblock root
+ inode before getting MHOLD list.
+ - cfs_readdir_filler(), uncached_readdir() set CFS_INO_INVALID_ATIME
+ flag on success.
- cfs_rename() skip redundant checks already done in Linux VFS.
- cfs_delete_inode() re-enable truncate_inode_pages() call. John Hughes
- verified this call is needed on linux-2.6.14 or OOPS in clear_inode (nr_pages != 0)
- when renaming. However we have not seen this on linux-2.6.11.
+ verified this call is needed on linux-2.6.14 or OOPS in clear_inode
+ (nr_pages != 0) when renaming. However we have not seen this on
+ linux-2.6.11.
- Fix cfs_clear_inode() cnode race; bogus pointer to svrcfstok structure.
- svrtok_dorelse() no longer call shrink_dcache_parent(); done in base.
* CFS (#ifdef CFS_EXPORT_OPS):
- - Fix bogus iget5_locked() return value due to cfs_find_actor() not testing CFS file handle.
- - clifhtoip() to use ilookup5() to support PFS where inode number is not unique.
- - When generating RPC response instead of copying the whole cfs_fh structure only copy the used portion.
- - When comparing CFS file handles we no longer inspect the possibly unused portion of cfs_fh structure.
- - New CFS_FH_LEN macro determines actual size of CFS file handle stored in cfs_fh structure.
- - Optimize svrhash() to no longer traverse padded (unused) portion of cfs_fh structure.
- - cfs_get_dentry() now uses clifhtoip() to support PFS where inode number is not unique.
+ - Fix bogus iget5_locked() return value due to cfs_find_actor() not
+ testing CFS file handle.
+ - clifhtoip() to use ilookup5() to support PFS where inode number is not
+ unique.
+ - When generating RPC response instead of copying the whole cfs_fh
+ structure only copy the used portion.
+ - When comparing CFS file handles we no longer inspect the possibly
+ unused portion of cfs_fh structure.
+ - New CFS_FH_LEN macro determines actual size of CFS file handle stored
+ in cfs_fh structure.
+ - Optimize svrhash() to no longer traverse padded (unused) portion of
+ cfs_fh structure.
+ - cfs_get_dentry() now uses clifhtoip() to support PFS where inode
+ number is not unique.
* CFS (#ifdef CFS_FH_TO_DENTRY_ANON):
- Remove #ifdef CFS_DECODE_FH deprecated by cfs_fhtohp().
- - Refactor cfs_fhtohp(). Optimize away makehp() and call svrtok_lookup() directly.
- - Create __cfs_get_dentry(). Returns a dentry given its superblock and CFS file handle.
+ - Refactor cfs_fhtohp(). Optimize away makehp() and call svrtok_lookup()
+ directly.
+ - Create __cfs_get_dentry(). Returns a dentry given its superblock and
+ CFS file handle.
- cfsd_proc_haverpc_0() no longer calls d_alloc_root().
* CFS (#ifdef CFS_INTR):
- - Add support for interruptible non-chard CFS. The MI_INTR flag is set when enabled.
- - New cfs_clnt_sigmask() / cfs_clnt_sigunmask() are used to ignore various signals.
+ - Add support for interruptible non-chard CFS. The MI_INTR flag is set
+ when enabled.
+ - New cfs_clnt_sigmask() / cfs_clnt_sigunmask() are used to ignore
+ various signals.
* CFS (#ifdef CFS_BDI):
- - Fix [ ssic-linux-Bugs-1811510 ] deadlock on loop mounted fs. CFS mounts get their own backing_dev_info structure.
+ - Fix [ ssic-linux-Bugs-1811510 ] deadlock on loop mounted fs. CFS
+ mounts get their own backing_dev_info structure.
* CFS (#ifdef RCU_CFSTOK_TABLE):
- Optimize away svrtok_lookup(); call hfind() directly.
* CFS (#ifndef CFS_VFSMOUNT_RACE_FIX):
- Fix race; bogus struct vfsmount.
- - Fix semi-deadlock; mnt_fix_devname() might sleep while in atomic (holding vfsmount_lock).
+ - Fix semi-deadlock; mnt_fix_devname() might sleep while in atomic
+ (holding vfsmount_lock).
* CFS (#ifdef SVRCFSTOK_SCT_FLAGS_NOLOCK):
- Regression:
- Test for CFS_NOTOKENCACHE flag in cfstok_putiflags().
* CFS (#ifdef KERNEL2616_53):
- - Migrate to CFS_MAX_FILE_IO_SIZE. Note 64KB limit due to ICS OOL message size (see ci-linux).
- - cfs_lookup_revalidate() no longer ignore failure to revalidate parent dentry.
+ - Migrate to CFS_MAX_FILE_IO_SIZE. Note 64KB limit due to ICS OOL
+ message size (see ci-linux).
+ - cfs_lookup_revalidate() no longer ignore failure to revalidate parent
+ dentry.
- Re-enable cfs_is_exclusive_create().
- cfs_lookup() optimize away remote lookup.
- cfs_link() i_count reference count bug fix.
- cfs_rename()
- i_nlink count bug fix.
- - skip revalidation of old and new dentries before RPC; depends on #define CFS_ZAP_CACHES.
- - unhash and if possible mark negative the new dentry of file to be renamed.
+ - skip revalidation of old and new dentries before RPC; depends on
+ #define CFS_ZAP_CACHES.
+ - unhash and if possible mark negative the new dentry of file to be
+ renamed.
- cfs_permission() optimize away write operations.
- cfs_lock() get lock to try local locking before going to server.
- - Add cfs_flock(). Simulate flock() locks using posix locks. (#ifdef CFS_FLOCK)
+ - Add cfs_flock(). Simulate flock() locks using posix locks. (#ifdef
+ CFS_FLOCK)
- Convert cnode flags to bit ops. (#ifdef CFS_FLAGS_BITOPS) [incomplete]
* CFS (#ifdef SVRTOK_KMEM_CACHE):
@@ -279,45 +357,59 @@
* ICS:
- Regression:
- - nsc_async_entry_alloc() semi-deadlock; might sleep inside interrupt context. (#ifdef NSC_ASYNC_ENTRY_KMEM_CACHE)
+ - nsc_async_entry_alloc() semi-deadlock; might sleep inside interrupt
+ context. (#ifdef NSC_ASYNC_ENTRY_KMEM_CACHE)
* ICS for TCP/IP (#ifdef LINUX_SSI_EVENT):
- - Poll for nodeinfo event in icscli_llsend() in case nodeinfo raced on SMP.
- However later analysis did not identify the race. This should be reverted.
+ - Poll for nodeinfo event in icscli_llsend() in case nodeinfo raced on
+ SMP. However later analysis did not identify the race. This should be
+ reverted.
* PROCFS:
- - Disable mem_write() a potential security hazard; disabled by default in base.
- - Optimize away calls to PVPOP_PROCFS_GETATTR(), VPROC_RELE(), vproc_is_alive() or process_is_alive().
+ - Disable mem_write() a potential security hazard; disabled by default
+ in base.
+ - Optimize away calls to PVPOP_PROCFS_GETATTR(), VPROC_RELE(),
+ vproc_is_alive() or process_is_alive().
- proc_pid_make_inode()
- optimize away vproc lookup; callers already have vproc.
- - new requirement for callers to hold VPROC movement lock except when process is migrating in.
- - check whether process is alive; callers expect us to do this check now.
- - obtain tgid for caller; negligible overhead since we are already getting attributes.
- - proc_pid_lookup() optimize away remote pid alive re-check; instead rely on revalidate.
- The old implementation skips this remote pid alive check too. (#ifdef VPROC_IS_ALIVE)
+ - new requirement for callers to hold VPROC movement lock except when
+ process is migrating in.
+ - check whether process is alive; callers expect us to do this check
+ now.
+ - obtain tgid for caller; negligible overhead since we are already
+ getting attributes.
+ - proc_pid_lookup() optimize away remote pid alive re-check; instead
+ rely on revalidate. The old implementation skips this remote pid
+ alive check too. (#ifdef VPROC_IS_ALIVE)
- Fix proc_task_readdir() race with process migration.
- - Optimize away VPROC LOCK in do_proc_links() path since caller has task_struct.
+ - Optimize away VPROC LOCK in do_proc_links() path since caller has
+ task_struct.
- New macros PROC_CLUSTER_NODELIST_START and PROC_CLUSTER_NODELIST_END
consolidate redundant code for "mapping" while block to cluster.
- - Use proc_match() from base instead of doing this buggy memory compare with MAX(x,y).
+ - Use proc_match() from base instead of doing this buggy memory compare
+ with MAX(x,y).
- Regression:
- - pid_delete_dentry(); those of zombies in dentry lru list. (#ifdef VPROC_HOLD_ZERO_GET_TASK)
+ - pid_delete_dentry(); those of zombies in dentry lru list. (#ifdef
+ VPROC_HOLD_ZERO_GET_TASK)
* PROCFS (#ifdef PROC_LARGE_MAXPIDS):
- Optimize proc_pid_readdir() for default/cluster view.
- Increase PROC_MAXPIDS from 20 to 8192 or VPROC_MAXPIDS.
- - For performance we no longer initialize the pid_list buffer when allocating struct proc_root_readdir_cookie.
+ - For performance we no longer initialize the pid_list buffer when
+ allocating struct proc_root_readdir_cookie.
* PROCFS (#ifdef PROC_CLUSTER_DIR_ENTRY_FIX):
- Fix proc_dir_entry race ...
- in do_proc_links() calling proc_pid_readlink() without holding BKL.
- missing BKL in proc_cluster_readdir(), loadlevel_write_proc(),
proc_cluster_node_init(), and proc_cluster_lookup().
- - Fix loadlevel_write_proc() unlikely but possible dentry race during backward path walk.
+ - Fix loadlevel_write_proc() unlikely but possible dentry race during
+ backward path walk.
- Optimize away xlate_proc_name() path walk in proc_cluster_node_init().
- proc_cluster_lookup()
- handle proc_mkdir() failure.
- - return alias of dentry if possible (unlikely without proc_cluster_revalidate).
+ - return alias of dentry if possible (unlikely without
+ proc_cluster_revalidate).
* SSI:
- do_write_loadlist() fixes. (#ifdef WRITE_LOADLIST_FIX)
@@ -325,32 +417,48 @@
- Skip empty lines.
- Skip duplicate entries when appending.
- Optimize away kmalloc.
- - Remove d_purge_aliases() which could race; instead use d_prune_aliases() from base.
- - Eliminate ssidev_poll_cli_t->pc_spinlock in sys_poll()/select() path. (#ifdef RCU_SSIDEV_POLL_CLI_LIST)
- - Add ssidev_poll_cli_ctor() constructor for struct ssidev_poll_cli_t. (#ifdef SSIDEV_POLL_CLI_KMEM_CACHE)
- - Fix rw_verify_area() fails when doing remote I/O. File position was not updated. (#ifdef SSI_RW_VERIFY_AREA_FIX)
- - New ssi_mask_signals() / ssi_unmask_signals() based on Linux rpc_clnt_sigmask(). (#ifdef LINUX_SSI_INTERRUPTIBLE)
+ - Remove d_purge_aliases() which could race; instead use
+ d_prune_aliases() from base.
+ - Eliminate ssidev_poll_cli_t->pc_spinlock in sys_poll()/select() path.
+ (#ifdef RCU_SSIDEV_POLL_CLI_LIST)
+ - Add ssidev_poll_cli_ctor() constructor for struct ssidev_poll_cli_t.
+ (#ifdef SSIDEV_POLL_CLI_KMEM_CACHE)
+ - Fix rw_verify_area() fails when doing remote I/O. File position was
+ not updated. (#ifdef SSI_RW_VERIFY_AREA_FIX)
+ - New ssi_mask_signals() / ssi_unmask_signals() based on Linux
+ rpc_clnt_sigmask(). (#ifdef LINUX_SSI_INTERRUPTIBLE)
- ssi_wait_event() is no longer inlined.
- Regression:
- size of kzmalloc() bound by array size INT_MAX in kcalloc().
* VPROC:
- - Fix possible pvp_pproc race. Set pvp_pproc before adding vproc to the vproc hash chain.
- - vproc_alloc() now sets vproc reference count to 1; save callers one VPROC_HOLD. (#ifdef VPROC_RELEASE__REFCNT_RACE_FIX)
- - Fix dvp_set_exec() and dvp_clear_exec() race with is_loadlevelable() over pvp_comm_de and pvp_comm_mnt.
- - Allow preemption between vproc hash chain buckets. (#ifdef VPROC_RCU_LIST)
- - Fix bogus procfs file->private_data after being freed in ssi_proc_root_release().
- - Fix rexecve_server_setup() and migrate_server_setup() modifying task_struct without locking.
- - Fix set_global_root() modifying task's fs_struct without proper locking.
+ - Fix possible pvp_pproc race. Set pvp_pproc before adding vproc to the
+ vproc hash chain.
+ - vproc_alloc() now sets vproc reference count to 1; save callers one
+ VPROC_HOLD. (#ifdef VPROC_RELEASE__REFCNT_RACE_FIX)
+ - Fix dvp_set_exec() and dvp_clear_exec() race with is_loadlevelable()
+ over pvp_comm_de and pvp_comm_mnt.
+ - Allow preemption between vproc hash chain buckets. (#ifdef
+ VPROC_RCU_LIST)
+ - Fix bogus procfs file->private_data after being freed in
+ ssi_proc_root_release().
+ - Fix rexecve_server_setup() and migrate_server_setup() modifying
+ task_struct without locking.
+ - Fix set_global_root() modifying task's fs_struct without proper
+ locking.
- Clean up code in vprocptr().
- - Fix ssisys_ignore_halfup() modifying pvproc flags without holding FLAG LOCK.
+ - Fix ssisys_ignore_halfup() modifying pvproc flags without holding FLAG
+ LOCK.
- Fix rcluster_get_mount()
- traversing process namespace without locking.
- - dereferencing rootmnt (struct vfsmount) without bumping reference count.
- - Fix rproc_arch_data_unload_msg() could get preempted while modifying the TLS.
+ - dereferencing rootmnt (struct vfsmount) without bumping reference
+ count.
+ - Fix rproc_arch_data_unload_msg() could get preempted while modifying
+ the TLS.
- Regression:
- - vproc_release() de-allocated struct vproc even when reference count got bumped; this was accidentally introduced
- during cleanup of RW vproc list lock. (#ifndef VPROC_LIST_SPINLOCK)
+ - vproc_release() de-allocated struct vproc even when reference count
+ got bumped; this was accidentally introduced during cleanup of RW
+ vproc list lock. (#ifndef VPROC_LIST_SPINLOCK)
* VPROC (#ifdef LOADLEVEL_TABLE_LIST):
- is_loadlevelable() fixes.
@@ -364,30 +472,40 @@
* VPROC (#if __SSI_LOCK_DEBUG):
- For performance with VPROC_KMEM_CACHE we no longer de-init vproc,
but to support __SSI_LOCK_DEBUG we must de-init vproc.
- Also later kernels removed slab destructors. Thanks to John Hughes
- for reporting issue. (See http://www.mail-archive.com/[email protected]/msg13529.html)
+ Also later kernels removed slab destructors. Thanks to John Hughes for
+ reporting issue. (See
+ http://www.mail-archive.com/[email protected]/msg13529.html)
* VPROC (#ifdef LINUX_SSI_EVENT):
- - Call VPROC_WAIT_EVENT_SIGNAL() instead of VPROC_WAIT_EVENT_BROADCAST() when appropriate. Base doesn't wake all.
- - Optimize away unnecessary calls to ssi_block_signals() / ssi_unblock_signals() in ssi_wait_event().
+ - Call VPROC_WAIT_EVENT_SIGNAL() instead of VPROC_WAIT_EVENT_BROADCAST()
+ when appropriate. Base doesn't wake all.
+ - Optimize away unnecessary calls to ssi_block_signals() /
+ ssi_unblock_signals() in ssi_wait_event().
* VPROC (#ifdef VPROC_HOLD_ZERO_GET_TASK):
- Fix PV_SYS flag not set in initialize_init_vproc().
- No longer need to hold VPROC LOCK ...
- when dereferencing pvp_pproc pointer.
- when calling PV_IS_ALIVE().
- - in pvpop_procfs_getattr() since there is no race with setpgid()/setsid().
+ - in pvpop_procfs_getattr() since there is no race with
+ setpgid()/setsid().
* VPROC (#ifdef VPROC_LOCKING_CONTEXT_FIX):
- Fix various semi-deadlock's
- - vpop_setup_vproc_relations() might sleep while in atomic (holding FLAG LOCK).
- - vproc_origin_find_nolock() might sleep while in atomic (holding vproc_origin_list_lock)
- in vproc_origin_inform_surrogate() code path.
- - As part of fix vproc_origin_list is serialized also by vproc_origin_create_mutex,
- - new macros VOD_GET()/VOD_PUT() implement use of reference counts for struct vproc_origin_data,
- - and we abandon use of shared read/write semaphore to track struct vproc_origin_data usage.
- - get_node() might sleep in atomic (holding tasklist_lock) in ssi_tty_get_pgrp()
- code path rssi_tty_get_pgrp, ssi_get_tty, devpts_get_tty, get_node.
+ - vpop_setup_vproc_relations() might sleep while in atomic (holding
+ FLAG LOCK).
+ - vproc_origin_find_nolock() might sleep while in atomic (holding
+ vproc_origin_list_lock) in vproc_origin_inform_surrogate() code
+ path.
+ - As part of fix vproc_origin_list is serialized also by
+ vproc_origin_create_mutex,
+ - new macros VOD_GET()/VOD_PUT() implement use of reference counts
+ for struct vproc_origin_data,
+ - and we abandon use of shared read/write semaphore to track struct
+ vproc_origin_data usage.
+ - get_node() might sleep in atomic (holding tasklist_lock) in
+ ssi_tty_get_pgrp() code path rssi_tty_get_pgrp, ssi_get_tty,
+ devpts_get_tty, get_node.
- with the fix we need to prevent bogus task->signal pointer after
returning from ssi_tty_get_pgrp() in do_task_stat().
@@ -481,56 +599,82 @@
* CFS:
- Fix cfsd_create() dentry leak or operating on unreferenced dentry.
- Fix server token table hash key race with PFS file handle data.
- - Further avoid ssi_get_super() to reduce contention. We don't cross mount points.
- - Switch to Linux get_empty_filp() to get unused file structure for svrcfstok structure.
- - Move redundant struct svrcfstok initialization to kmem cache constructor. (#ifdef SVRCFS_TOKEN_KMEM_CACHE)
+ - Further avoid ssi_get_super() to reduce contention. We don't cross
+ mount points.
+ - Switch to Linux get_empty_filp() to get unused file structure for
+ svrcfstok structure.
+ - Move redundant struct svrcfstok initialization to kmem cache
+ constructor. (#ifdef SVRCFS_TOKEN_KMEM_CACHE)
- Regression:
- Possible busy inodes after unmounting. (#ifdef RCU_CFSTOK_TABLE)
- - Possible inode leak when out of memory doing export ops get_dentry. (#ifdef CFS_EXPORT_OPS)
- - Possibly missed drop_super() while performing export ops get_dentry. (#ifdef CFS_FH_TO_DENTRY_ANON)
+ - Possible inode leak when out of memory doing export ops get_dentry.
+ (#ifdef CFS_EXPORT_OPS)
+ - Possibly missed drop_super() while performing export ops get_dentry.
+ (#ifdef CFS_FH_TO_DENTRY_ANON)
* ICS:
- - Fix uninitialized linked list pointers in client and server handle structures.
+ - Fix uninitialized linked list pointers in client and server handle
+ structures.
* IPC:
- - Fix uninitialized list_head in rmtunix_socket_info structure; SSI-1.9.0 bug. (#ifdef IPC_STALE_RMTUNIX_CACHE_FIX)
- - Fix uninitialized spin lock in kern_ipc_perm structure (in SSI context).
- - Fix uninitialized linked list pointers in unixnm_svr_entry and unixnm_cache_entry structures.
+ - Fix uninitialized list_head in rmtunix_socket_info structure;
+ SSI-1.9.0 bug. (#ifdef IPC_STALE_RMTUNIX_CACHE_FIX)
+ - Fix uninitialized spin lock in kern_ipc_perm structure (in SSI
+ context).
+ - Fix uninitialized linked list pointers in unixnm_svr_entry and
+ unixnm_cache_entry structures.
- SHM dentry lookup bug fixes:
- - Error -ENOENT in CFS (negative dentry) due to not validating against PFS.
+ - Error -ENOENT in CFS (negative dentry) due to not validating against
+ PFS.
- SHM negative dentry lookup could cause future memory corruption.
- Did not increment inode count when instantiating dentry.
- - Bad dentry reference count side-effect due to incorrect return value for Linux namespace architecture.
- - Fix shm_ids_svr table race; mutex not held or wrong mutex held. (#ifdef IPC_SHM_RACE_FIX)
- - Downgrade NSC_IPC_WRLOCK() where appropriate; reduce contention. (#ifdef NSC_IPC_RWLOCK_DOWNGRADE)
+ - Bad dentry reference count side-effect due to incorrect return
+ value for Linux namespace architecture.
+ - Fix shm_ids_svr table race; mutex not held or wrong mutex held.
+ (#ifdef IPC_SHM_RACE_FIX)
+ - Downgrade NSC_IPC_WRLOCK() where appropriate; reduce contention.
+ (#ifdef NSC_IPC_RWLOCK_DOWNGRADE)
* IPVS:
- - Fix uninitialized linked list pointers in ipvs_dirinfo and portweight_list structures.
+ - Fix uninitialized linked list pointers in ipvs_dirinfo and
+ portweight_list structures.
* SSI:
- - Fix dentry race calling __d_path() outside dcache lock. (#ifdef SSI_DCACHE_RACE_FIX)
- - Fix uninitialized linked list pointers in structures rmtfb_cmn, ssidev_hash, fifonm_svr_entry, fifonm_cache_entry, and ssipty_svr_entry.
+ - Fix dentry race calling __d_path() outside dcache lock. (#ifdef
+ SSI_DCACHE_RACE_FIX)
+ - Fix uninitialized linked list pointers in structures rmtfb_cmn,
+ ssidev_hash, fifonm_svr_entry, fifonm_cache_entry, and
+ ssipty_svr_entry.
- Regression:
- - real_lookup() possibly returning unreferenced dentry instead of -ENOENT. (#ifndef REAL_LOOKUP_SSI_1_9_3_FIXED_PLS_VERIFY)
+ - real_lookup() possibly returning unreferenced dentry instead of
+ -ENOENT. (#ifndef REAL_LOOKUP_SSI_1_9_3_FIXED_PLS_VERIFY)
* VPROC:
- Remove deprecated RW semaphore implementation of vproc list lock.
- - VPROC_LOCATE_PID() further avoid global list lock; no longer support LVP_NOLOCK flag. (#ifdef VPROC_RCU_LIST)
- - Fix possibly missed drop_super() during process migration exporting of file descriptors.
+ - VPROC_LOCATE_PID() further avoid global list lock; no longer support
+ LVP_NOLOCK flag. (#ifdef VPROC_RCU_LIST)
+ - Fix possibly missed drop_super() during process migration exporting of
+ file descriptors.
- Fix partially initialized proc_root_readdir_cookie structure.
- - semundo_load_msg() handle process sysvsem.undo_list->proc_list race take two. (#ifdef VPROC_UNLOAD_SETSCHED_SMP)
- - Move redundant struct vproc initialization to kmem cache constructor. (#ifdef VPROC_KMEM_CACHE)
+ - semundo_load_msg() handle process sysvsem.undo_list->proc_list race
+ take two. (#ifdef VPROC_UNLOAD_SETSCHED_SMP)
+ - Move redundant struct vproc initialization to kmem cache constructor.
+ (#ifdef VPROC_KMEM_CACHE)
- Regression:
- - semi-deadlock in vproc_slave_carelist_create(); might sleep
- while holding vproc list lock. (#ifdef VPROC_LIST_SPINLOCK)
- - VPROC_LOCATE_PID() race could corrupt vproc hash table. (#ifdef VPROC_RCU_LIST)
- - Process migration traversing rmtfb path while importing SHM fd's; caused by fb_svrnode macro. (#ifdef REOP_EXPORT_PATH_SVRNODE)
+ - semi-deadlock in vproc_slave_carelist_create(); might sleep while
+ holding vproc list lock. (#ifdef VPROC_LIST_SPINLOCK)
+ - VPROC_LOCATE_PID() race could corrupt vproc hash table. (#ifdef
+ VPROC_RCU_LIST)
+ - Process migration traversing rmtfb path while importing SHM fd's;
+ caused by fb_svrnode macro. (#ifdef REOP_EXPORT_PATH_SVRNODE)
2009/02/07 rogertsang <[email protected]>
* IPC:
- - Fix missing sock_hold() for sock reference in rmtunix_socket_info structure. (#ifdef IPC_STALE_RMTUNIX_CACHE_FIX)
+ - Fix missing sock_hold() for sock reference in rmtunix_socket_info
+ structure. (#ifdef IPC_STALE_RMTUNIX_CACHE_FIX)
- Regression:
- - rmtunix_socket_info structure lookup race with dealloc. (#ifdef RCU_RMTUNIX_CACHE)
+ - rmtunix_socket_info structure lookup race with dealloc. (#ifdef
+ RCU_RMTUNIX_CACHE)
cluster/ssi/cfs/cfs_ipcshm.c | 4 -
cluster/ssi/cfs/svrcfs.c | 37 +++++----------
@@ -543,13 +687,16 @@
2009/02/06 rogertsang <[email protected]>
* CFS:
- - Allocate file_lock structure from stack in cfs_proc_set/getlock_0(), cfs_rb_dolocks().
+ - Allocate file_lock structure from stack in cfs_proc_set/getlock_0(),
+ cfs_rb_dolocks().
- Fix possible endless loop in cfs_rb_dolocks(); need error handling.
- - Optimize away early malloc in svrtok_lookup(). (#ifdef RCU_CFSTOK_TABLE)
+ - Optimize away early malloc in svrtok_lookup(). (#ifdef
+ RCU_CFSTOK_TABLE)
* IPC:
- Regression:
- - Partially initialized rmtunix_socket_info structure. (#ifdef RMTUNIX_SOCK_INFO_CACHE)
+ - Partially initialized rmtunix_socket_info structure. (#ifdef
+ RMTUNIX_SOCK_INFO_CACHE)
* VPROC:
- Regression:
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july