Whamcloud - gitweb
Minor compilation fixes for RedHat 2.4.9
authorbraam <braam>
Tue, 6 Nov 2001 19:05:51 +0000 (19:05 +0000)
committerbraam <braam>
Tue, 6 Nov 2001 19:05:51 +0000 (19:05 +0000)
Fix reference decreasing bug in namei.c

lustre/obdfs/namei.c
lustre/obdfs/rw.c

index 34808b7..1d79362 100644 (file)
@@ -63,7 +63,8 @@ static inline void ext2_inc_count(struct inode *inode)
 static inline void ext2_dec_count(struct inode *inode)
 {
        inode->i_nlink--;
-       // obdfs_change_inode(inode);
+       if (inode->i_nlink > 0) 
+               obdfs_change_inode(inode);
 }
 
 static inline int ext2_add_nondir(struct dentry *dentry, struct inode *inode)
index 9cdd03a..71b27da 100644 (file)
@@ -48,12 +48,20 @@ static int cache_writes = 0;
  */
 void __set_page_dirty(struct page *page)
 {
-       struct address_space *mapping = page->mapping;
+       struct address_space *mapping;
+       spinlock_t *pg_lock;
+
+       pg_lock = PAGECACHE_LOCK(page);
+       spin_lock(pg_lock);
+
+       mapping = page->mapping;
+       spin_lock(&mapping->page_lock);
 
-       spin_lock(&pagecache_lock);
        list_del(&page->list);
        list_add(&page->list, &mapping->dirty_pages);
-       spin_unlock(&pagecache_lock);
+
+       spin_unlock(&mapping->page_lock);
+       spin_unlock(pg_lock);
 
        if (mapping->host)
                mark_inode_dirty_pages(mapping->host);
@@ -64,14 +72,21 @@ void __set_page_dirty(struct page *page)
  */
 void __set_page_clean(struct page *page)
 {
-       struct address_space *mapping = page->mapping;
        struct inode *inode;
-       ENTRY;
+       struct address_space *mapping;
+       spinlock_t *pg_lock;
+
+       pg_lock = PAGECACHE_LOCK(page);
+       spin_lock(pg_lock);
+
+       mapping = page->mapping;
+       spin_lock(&mapping->page_lock);
 
-       spin_lock(&pagecache_lock);
        list_del(&page->list);
        list_add(&page->list, &mapping->clean_pages);
-       spin_unlock(&pagecache_lock);
+
+       spin_unlock(&mapping->page_lock);
+       spin_unlock(pg_lock);
 
        inode = mapping->host;
        if (list_empty(&mapping->dirty_pages)) {