Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b6b4a4399c2a83d1af77c99dee0d0b5cc15ec268
Commit:     b6b4a4399c2a83d1af77c99dee0d0b5cc15ec268
Parent:     0b8ead82f5d9d8f08c0d1236f2e350b70a977753
Author:     Tejun Heo <[EMAIL PROTECTED]>
AuthorDate: Thu Jun 14 03:45:18 2007 +0900
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Wed Jul 11 16:09:07 2007 -0700

    sysfs: move s_active functions to fs/sysfs/dir.c
    
    These functions are about to receive more complexity and doesn't
    really need to be inlined in the first place.  Move them from
    fs/sysfs/sysfs.h to fs/sysfs/dir.c.
    
    Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 fs/sysfs/dir.c   |   88 ++++++++++++++++++++++++++++++++++++++++++++++++++
 fs/sysfs/sysfs.h |   94 +++--------------------------------------------------
 2 files changed, 94 insertions(+), 88 deletions(-)

diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index 06dff2c..f5f0b93 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -20,6 +20,94 @@ spinlock_t kobj_sysfs_assoc_lock = SPIN_LOCK_UNLOCKED;
 static spinlock_t sysfs_ino_lock = SPIN_LOCK_UNLOCKED;
 static DEFINE_IDA(sysfs_ino_ida);
 
+/**
+ *     sysfs_get_active - get an active reference to sysfs_dirent
+ *     @sd: sysfs_dirent to get an active reference to
+ *
+ *     Get an active reference of @sd.  This function is noop if @sd
+ *     is NULL.
+ *
+ *     RETURNS:
+ *     Pointer to @sd on success, NULL on failure.
+ */
+struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd)
+{
+       if (sd) {
+               if (unlikely(!down_read_trylock(&sd->s_active)))
+                       sd = NULL;
+       }
+       return sd;
+}
+
+/**
+ *     sysfs_put_active - put an active reference to sysfs_dirent
+ *     @sd: sysfs_dirent to put an active reference to
+ *
+ *     Put an active reference to @sd.  This function is noop if @sd
+ *     is NULL.
+ */
+void sysfs_put_active(struct sysfs_dirent *sd)
+{
+       if (sd)
+               up_read(&sd->s_active);
+}
+
+/**
+ *     sysfs_get_active_two - get active references to sysfs_dirent and parent
+ *     @sd: sysfs_dirent of interest
+ *
+ *     Get active reference to @sd and its parent.  Parent's active
+ *     reference is grabbed first.  This function is noop if @sd is
+ *     NULL.
+ *
+ *     RETURNS:
+ *     Pointer to @sd on success, NULL on failure.
+ */
+struct sysfs_dirent *sysfs_get_active_two(struct sysfs_dirent *sd)
+{
+       if (sd) {
+               if (sd->s_parent && unlikely(!sysfs_get_active(sd->s_parent)))
+                       return NULL;
+               if (unlikely(!sysfs_get_active(sd))) {
+                       sysfs_put_active(sd->s_parent);
+                       return NULL;
+               }
+       }
+       return sd;
+}
+
+/**
+ *     sysfs_put_active_two - put active references to sysfs_dirent and parent
+ *     @sd: sysfs_dirent of interest
+ *
+ *     Put active references to @sd and its parent.  This function is
+ *     noop if @sd is NULL.
+ */
+void sysfs_put_active_two(struct sysfs_dirent *sd)
+{
+       if (sd) {
+               sysfs_put_active(sd);
+               sysfs_put_active(sd->s_parent);
+       }
+}
+
+/**
+ *     sysfs_deactivate - deactivate sysfs_dirent
+ *     @sd: sysfs_dirent to deactivate
+ *
+ *     Deny new active references and drain existing ones.  s_active
+ *     will be unlocked when the sysfs_dirent is released.
+ */
+void sysfs_deactivate(struct sysfs_dirent *sd)
+{
+       down_write_nested(&sd->s_active, SYSFS_S_ACTIVE_DEACTIVATE);
+
+       /* s_active will be unlocked by the thread doing the final put
+        * on @sd.  Lie to lockdep.
+        */
+       rwsem_release(&sd->s_active.dep_map, 1, _RET_IP_);
+}
+
 static int sysfs_alloc_ino(ino_t *pino)
 {
        int ino, rc;
diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h
index 627bf39..f8779ea 100644
--- a/fs/sysfs/sysfs.h
+++ b/fs/sysfs/sysfs.h
@@ -56,6 +56,12 @@ enum sysfs_s_active_class
 extern struct vfsmount * sysfs_mount;
 extern struct kmem_cache *sysfs_dir_cachep;
 
+extern struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd);
+extern void sysfs_put_active(struct sysfs_dirent *sd);
+extern struct sysfs_dirent *sysfs_get_active_two(struct sysfs_dirent *sd);
+extern void sysfs_put_active_two(struct sysfs_dirent *sd);
+extern void sysfs_deactivate(struct sysfs_dirent *sd);
+
 extern void sysfs_delete_inode(struct inode *inode);
 extern void sysfs_init_inode(struct sysfs_dirent *sd, struct inode *inode);
 extern struct inode * sysfs_get_inode(struct sysfs_dirent *sd);
@@ -104,94 +110,6 @@ static inline void sysfs_put(struct sysfs_dirent * sd)
                release_sysfs_dirent(sd);
 }
 
-/**
- *     sysfs_get_active - get an active reference to sysfs_dirent
- *     @sd: sysfs_dirent to get an active reference to
- *
- *     Get an active reference of @sd.  This function is noop if @sd
- *     is NULL.
- *
- *     RETURNS:
- *     Pointer to @sd on success, NULL on failure.
- */
-static inline struct sysfs_dirent *sysfs_get_active(struct sysfs_dirent *sd)
-{
-       if (sd) {
-               if (unlikely(!down_read_trylock(&sd->s_active)))
-                       sd = NULL;
-       }
-       return sd;
-}
-
-/**
- *     sysfs_put_active - put an active reference to sysfs_dirent
- *     @sd: sysfs_dirent to put an active reference to
- *
- *     Put an active reference to @sd.  This function is noop if @sd
- *     is NULL.
- */
-static inline void sysfs_put_active(struct sysfs_dirent *sd)
-{
-       if (sd)
-               up_read(&sd->s_active);
-}
-
-/**
- *     sysfs_get_active_two - get active references to sysfs_dirent and parent
- *     @sd: sysfs_dirent of interest
- *
- *     Get active reference to @sd and its parent.  Parent's active
- *     reference is grabbed first.  This function is noop if @sd is
- *     NULL.
- *
- *     RETURNS:
- *     Pointer to @sd on success, NULL on failure.
- */
-static inline struct sysfs_dirent *sysfs_get_active_two(struct sysfs_dirent 
*sd)
-{
-       if (sd) {
-               if (sd->s_parent && unlikely(!sysfs_get_active(sd->s_parent)))
-                       return NULL;
-               if (unlikely(!sysfs_get_active(sd))) {
-                       sysfs_put_active(sd->s_parent);
-                       return NULL;
-               }
-       }
-       return sd;
-}
-
-/**
- *     sysfs_put_active_two - put active references to sysfs_dirent and parent
- *     @sd: sysfs_dirent of interest
- *
- *     Put active references to @sd and its parent.  This function is
- *     noop if @sd is NULL.
- */
-static inline void sysfs_put_active_two(struct sysfs_dirent *sd)
-{
-       if (sd) {
-               sysfs_put_active(sd);
-               sysfs_put_active(sd->s_parent);
-       }
-}
-
-/**
- *     sysfs_deactivate - deactivate sysfs_dirent
- *     @sd: sysfs_dirent to deactivate
- *
- *     Deny new active references and drain existing ones.  s_active
- *     will be unlocked when the sysfs_dirent is released.
- */
-static inline void sysfs_deactivate(struct sysfs_dirent *sd)
-{
-       down_write_nested(&sd->s_active, SYSFS_S_ACTIVE_DEACTIVATE);
-
-       /* s_active will be unlocked by the thread doing the final put
-        * on @sd.  Lie to lockdep.
-        */
-       rwsem_release(&sd->s_active.dep_map, 1, _RET_IP_);
-}
-
 static inline int sysfs_is_shadowed_inode(struct inode *inode)
 {
        return S_ISDIR(inode->i_mode) && inode->i_op->follow_link;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to