[SSI] openssi/kernel/cluster/ssi/token msgsup.c,1.7,1.8
Roger Tsang <[email protected]>
| Newsgroups | gmane.linux.cluster.ssic.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/token
In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23689/cluster/ssi/token
Modified Files:
Tag: OPENSSI-FC
msgsup.c
Log Message:
CFS:
- Fix possible 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.
- Regression:
- 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)
IPC:
- 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.
- Fix 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.
IPVS:
- 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.
VPROC:
- 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)
- Regression:
- Process migration traversing rmtfb path while importing SHM fd's; caused by fb_svrnode macro. (#ifdef REOP_EXPORT_PATH_SVRNODE)
Index: msgsup.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/token/msgsup.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- msgsup.c 3 Feb 2009 06:18:12 -0000 1.7
+++ msgsup.c 19 Feb 2009 08:01:02 -0000 1.8
@@ -268,18 +268,16 @@
msgsup_delid(long id)
{
struct id *ident;
-#ifdef RCU_MSGSUP
- struct list_head *pos, *n;
+#ifdef RCU_MSGSUP
rcu_read_lock();
- list_for_each_safe_rcu(pos, n, &msgsup_idlist) {
- ident = list_entry(pos, typeof(*ident), id_list);
+ list_for_each_entry_rcu(ident, &msgsup_idlist, id_list) {
if (ident->id != id)
continue;
- rcu_read_unlock();
MSG_LOCK(msgsup_idlist_lock);
list_del_rcu(&ident->id_list);
MSG_UNLOCK(msgsup_idlist_lock);
+ rcu_read_unlock();
call_rcu(&ident->id_rcu, msgsup_id_free);
return;
}
@@ -441,9 +439,6 @@
void
process_msgs(int force)
{
-#ifdef RCU_MSGSUP
- struct list_head *pos, *n;
-#endif
struct msg *save;
int recurse;
@@ -481,8 +476,7 @@
restart:
#ifdef RCU_MSGSUP
rcu_read_lock();
- list_for_each_safe_rcu(pos, n, &msgsup_head) {
- save = list_entry(pos, typeof(*save), msg_list);
+ list_for_each_entry_rcu(save, &msgsup_head, msg_list) {
if (save->id != NSC_UNIQUE_ID)
continue;
MSG_LOCK(msg_lock);
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H