sysv: switch to put_and_unmap_page()
[linux-2.6-block.git] / fs / sysv / dir.c
index e2d26eb78af70af8fa21f63d9b49d227a00e34d5..cdb3d632c63da878f83fff438267532ccebb8277 100644 (file)
@@ -28,12 +28,6 @@ const struct file_operations sysv_dir_operations = {
        .fsync          = generic_file_fsync,
 };
 
-inline void dir_put_page(struct page *page, void *page_addr)
-{
-       kunmap_local(page_addr);
-       put_page(page);
-}
-
 static void dir_commit_chunk(struct page *page, loff_t pos, unsigned len)
 {
        struct address_space *mapping = page->mapping;
@@ -58,7 +52,7 @@ static int sysv_handle_dirsync(struct inode *dir)
 }
 
 /*
- * Calls to dir_get_page()/dir_put_page() must be nested according to the
+ * Calls to dir_get_page()/put_and_unmap_page() must be nested according to the
  * rules documented in mm/highmem.rst.
  *
  * NOTE: sysv_find_entry() and sysv_dotdot() act as calls to dir_get_page()
@@ -109,11 +103,11 @@ static int sysv_readdir(struct file *file, struct dir_context *ctx)
                        if (!dir_emit(ctx, name, strnlen(name,SYSV_NAMELEN),
                                        fs16_to_cpu(SYSV_SB(sb), de->inode),
                                        DT_UNKNOWN)) {
-                               dir_put_page(page, kaddr);
+                               put_and_unmap_page(page, kaddr);
                                return 0;
                        }
                }
-               dir_put_page(page, kaddr);
+               put_and_unmap_page(page, kaddr);
        }
        return 0;
 }
@@ -137,7 +131,7 @@ static inline int namecompare(int len, int maxlen,
  * itself (as a parameter - res_dir). It does NOT read the inode of the
  * entry - you'll have to do that yourself if you want to.
  *
- * On Success dir_put_page() should be called on *res_page.
+ * On Success put_and_unmap_page() should be called on *res_page.
  *
  * sysv_find_entry() acts as a call to dir_get_page() and must be treated
  * accordingly for nesting purposes.
@@ -172,7 +166,7 @@ struct sysv_dir_entry *sysv_find_entry(struct dentry *dentry, struct page **res_
                                                        name, de->name))
                                        goto found;
                        }
-                       dir_put_page(page, kaddr);
+                       put_and_unmap_page(page, kaddr);
                }
 
                if (++n >= npages)
@@ -215,7 +209,7 @@ int sysv_add_link(struct dentry *dentry, struct inode *inode)
                                goto out_page;
                        de++;
                }
-               dir_put_page(page, kaddr);
+               put_and_unmap_page(page, kaddr);
        }
        BUG();
        return -EINVAL;
@@ -234,7 +228,7 @@ got_it:
        mark_inode_dirty(dir);
        err = sysv_handle_dirsync(dir);
 out_page:
-       dir_put_page(page, kaddr);
+       put_and_unmap_page(page, kaddr);
        return err;
 out_unlock:
        unlock_page(page);
@@ -327,12 +321,12 @@ int sysv_empty_dir(struct inode * inode)
                        if (de->name[1] != '.' || de->name[2])
                                goto not_empty;
                }
-               dir_put_page(page, kaddr);
+               put_and_unmap_page(page, kaddr);
        }
        return 1;
 
 not_empty:
-       dir_put_page(page, kaddr);
+       put_and_unmap_page(page, kaddr);
        return 0;
 }
 
@@ -358,7 +352,7 @@ int sysv_set_link(struct sysv_dir_entry *de, struct page *page,
 }
 
 /*
- * Calls to dir_get_page()/dir_put_page() must be nested according to the
+ * Calls to dir_get_page()/put_and_unmap_page() must be nested according to the
  * rules documented in mm/highmem.rst.
  *
  * sysv_dotdot() acts as a call to dir_get_page() and must be treated
@@ -382,7 +376,7 @@ ino_t sysv_inode_by_name(struct dentry *dentry)
        
        if (de) {
                res = fs16_to_cpu(SYSV_SB(dentry->d_sb), de->inode);
-               dir_put_page(page, de);
+               put_and_unmap_page(page, de);
        }
        return res;
 }