linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / fs / sysv / dir.c
index f2bef96..cce8b05 100644 (file)
@@ -20,7 +20,7 @@
 
 static int sysv_readdir(struct file *, void *, filldir_t);
 
-const struct file_operations sysv_dir_operations = {
+struct file_operations sysv_dir_operations = {
        .read           = generic_read_dir,
        .readdir        = sysv_readdir,
        .fsync          = sysv_sync_file,
@@ -53,7 +53,8 @@ static int dir_commit_chunk(struct page *page, unsigned from, unsigned to)
 static struct page * dir_get_page(struct inode *dir, unsigned long n)
 {
        struct address_space *mapping = dir->i_mapping;
-       struct page *page = read_mapping_page(mapping, n, NULL);
+       struct page *page = read_cache_page(mapping, n,
+                               (filler_t*)mapping->a_ops->readpage, NULL);
        if (!IS_ERR(page)) {
                wait_on_page_locked(page);
                kmap(page);
@@ -252,7 +253,8 @@ int sysv_delete_entry(struct sysv_dir_entry *de, struct page *page)
 
        lock_page(page);
        err = mapping->a_ops->prepare_write(NULL, page, from, to);
-       BUG_ON(err);
+       if (err)
+               BUG();
        de->inode = 0;
        err = dir_commit_chunk(page, from, to);
        dir_put_page(page);
@@ -351,7 +353,8 @@ void sysv_set_link(struct sysv_dir_entry *de, struct page *page,
 
        lock_page(page);
        err = page->mapping->a_ops->prepare_write(NULL, page, from, to);
-       BUG_ON(err);
+       if (err)
+               BUG();
        de->inode = cpu_to_fs16(SYSV_SB(inode->i_sb), inode->i_ino);
        err = dir_commit_chunk(page, from, to);
        dir_put_page(page);