Whamcloud - gitweb
snap/snap.c: snap_do_cow() fixed case with existing indirect object
[fs/lustre-release.git] / lustre / obdfs / namei.c
index 01d5066..0eec7c8 100644 (file)
@@ -86,7 +86,7 @@ struct page * obdfs_find_entry (struct inode * dir,
        if (namelen > EXT2_NAME_LEN)
                return NULL;
 
-       CDEBUG(D_INODE, "dirsize is %ld\n", dir->i_size);
+       CDEBUG(D_INODE, "dirsize is %Ld\n", dir->i_size);
 
        page = 0;
        offset = 0;
@@ -577,7 +577,6 @@ int obdfs_mkdir(struct inode * dir, struct dentry * dentry, int mode)
 
 
        child->i_op = &obdfs_inode_ops;
-       child->i_size = PAGE_SIZE;
        child->i_blocks = 0;    
        child_page = obdfs_getpage(child, 0, 1, LOCKED);
        if (!child_page) {
@@ -586,7 +585,6 @@ int obdfs_mkdir(struct inode * dir, struct dentry * dentry, int mode)
                iput (child);
                return err;
        }
-       child->i_blocks = PAGE_SIZE/child->i_sb->s_blocksize;
 
        /* create . and .. */
        de = (struct ext2_dir_entry_2 *) page_address(child_page);
@@ -604,6 +602,8 @@ int obdfs_mkdir(struct inode * dir, struct dentry * dentry, int mode)
        ext2_set_de_type(dir->i_sb, de, S_IFDIR);
        
        iops(dir)->o_brw(WRITE, iid(dir), child, child_page, 1);
+       child->i_blocks = PAGE_SIZE/child->i_sb->s_blocksize;
+       child->i_size = PAGE_SIZE;
        UnlockPage(child_page);
        page_cache_release(child_page);
 
@@ -1068,11 +1068,11 @@ int obdfs_rename (struct inode * old_dir, struct dentry *old_dentry,
                }
        }
        if ( old_page != new_page ) {
-               unsigned long offset = old_page->offset;
+               unsigned long index = old_page->index;
                /* lock the old_page and release unlocked copy */
                CDEBUG(D_INODE, "old_page at %p\n", old_page);
                page_cache_release(old_page);
-               old_page = obdfs_getpage(old_dir, offset, 0, LOCKED);
+               old_page = obdfs_getpage(old_dir, index >> PAGE_SHIFT, 0, LOCKED);
                CDEBUG(D_INODE, "old_page at %p\n", old_page);
                iops(old_dir)->o_brw(WRITE, iid(old_dir), old_dir, old_page,0);
        }