From 77c3c4b3a6065638ddf6a6ec45b9694fff40bc0a Mon Sep 17 00:00:00 2001 From: trz Date: Thu, 21 Sep 2006 21:19:06 +0000 Subject: [PATCH] Use semaphore if mutex not available --- runtime/transport/ChangeLog | 7 +++++++ runtime/transport/relayfs.c | 22 ++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/runtime/transport/ChangeLog b/runtime/transport/ChangeLog index 969f6fb0c..9163941a6 100644 --- a/runtime/transport/ChangeLog +++ b/runtime/transport/ChangeLog @@ -1,3 +1,10 @@ +2006-09-21 Tom Zanussi + + * relayfs.c (_stp_get_relay_root): Call new mutex lock/unlock + wrappers instead. + (_stp_lock_inode): New. + (_stp_unlock_inode): New. + 2006-09-19 Tom Zanussi * procfs.c (_stp_get_proc_root): Removed. diff --git a/runtime/transport/relayfs.c b/runtime/transport/relayfs.c index defe00878..1b616b7ef 100644 --- a/runtime/transport/relayfs.c +++ b/runtime/transport/relayfs.c @@ -137,6 +137,24 @@ static void _stp_remove_relay_dir(struct dentry *dir) #endif } +static inline void _stp_lock_inode(struct inode *inode) +{ +#ifdef DEFINE_MUTEX + mutex_lock(&inode->i_mutex); +#else + down(&inode->i_sem); +#endif +} + +static inline void _stp_unlock_inode(struct inode *inode) +{ +#ifdef DEFINE_MUTEX + mutex_unlock(&inode->i_mutex); +#else + up(&inode->i_sem); +#endif +} + static struct dentry *_stp_get_relay_root(void) { struct file_system_type *fs; @@ -157,9 +175,9 @@ static struct dentry *_stp_get_relay_root(void) return NULL; sb = list_entry(fs->fs_supers.next, struct super_block, s_instances); - mutex_lock(&sb->s_root->d_inode->i_mutex); + _stp_lock_inode(sb->s_root->d_inode); root = lookup_one_len(dirname, sb->s_root, strlen(dirname)); - mutex_unlock(&sb->s_root->d_inode->i_mutex); + _stp_unlock_inode(sb->s_root->d_inode); if (!IS_ERR(root)) dput(root); -- 2.43.5