]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/hfsplus/inode.c
ocfs2: retry operations when a lock is marked in recovery
[linux-2.6-omap-h63xx.git] / fs / hfsplus / inode.c
index 7acff6c5464ffdca66599d0dbebe524571139c40..acf66dba3e01ddc5256469ef5183853128107ee6 100644 (file)
 
 static int hfsplus_readpage(struct file *file, struct page *page)
 {
-       //printk("readpage: %lu\n", page->index);
        return block_read_full_page(page, hfsplus_get_block);
 }
 
 static int hfsplus_writepage(struct page *page, struct writeback_control *wbc)
 {
-       //printk("writepage: %lu\n", page->index);
        return block_write_full_page(page, hfsplus_get_block, wbc);
 }
 
@@ -92,21 +90,9 @@ static int hfsplus_releasepage(struct page *page, gfp_t mask)
                } while (--i && nidx < tree->node_count);
                spin_unlock(&tree->hash_lock);
        }
-       //printk("releasepage: %lu,%x = %d\n", page->index, mask, res);
        return res ? try_to_free_buffers(page) : 0;
 }
 
-static int hfsplus_get_blocks(struct inode *inode, sector_t iblock, unsigned long max_blocks,
-                             struct buffer_head *bh_result, int create)
-{
-       int ret;
-
-       ret = hfsplus_get_block(inode, iblock, bh_result, create);
-       if (!ret)
-               bh_result->b_size = (1 << inode->i_blkbits);
-       return ret;
-}
-
 static ssize_t hfsplus_direct_IO(int rw, struct kiocb *iocb,
                const struct iovec *iov, loff_t offset, unsigned long nr_segs)
 {
@@ -114,7 +100,7 @@ static ssize_t hfsplus_direct_IO(int rw, struct kiocb *iocb,
        struct inode *inode = file->f_dentry->d_inode->i_mapping->host;
 
        return blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov,
-                                 offset, nr_segs, hfsplus_get_blocks, NULL);
+                                 offset, nr_segs, hfsplus_get_block, NULL);
 }
 
 static int hfsplus_writepages(struct address_space *mapping,
@@ -294,7 +280,7 @@ static struct inode_operations hfsplus_file_inode_operations = {
        .listxattr      = hfsplus_listxattr,
 };
 
-static struct file_operations hfsplus_file_operations = {
+static const struct file_operations hfsplus_file_operations = {
        .llseek         = generic_file_llseek,
        .read           = generic_file_read,
        .write          = generic_file_write,
@@ -434,7 +420,8 @@ int hfsplus_cat_read_inode(struct inode *inode, struct hfs_find_data *fd)
                inode->i_size = 2 + be32_to_cpu(folder->valence);
                inode->i_atime = hfsp_mt2ut(folder->access_date);
                inode->i_mtime = hfsp_mt2ut(folder->content_mod_date);
-               inode->i_ctime = inode->i_mtime;
+               inode->i_ctime = hfsp_mt2ut(folder->attribute_mod_date);
+               HFSPLUS_I(inode).create_date = folder->create_date;
                HFSPLUS_I(inode).fs_blocks = 0;
                inode->i_op = &hfsplus_dir_inode_operations;
                inode->i_fop = &hfsplus_dir_operations;
@@ -465,9 +452,10 @@ int hfsplus_cat_read_inode(struct inode *inode, struct hfs_find_data *fd)
                }
                inode->i_atime = hfsp_mt2ut(file->access_date);
                inode->i_mtime = hfsp_mt2ut(file->content_mod_date);
-               inode->i_ctime = inode->i_mtime;
+               inode->i_ctime = hfsp_mt2ut(file->attribute_mod_date);
+               HFSPLUS_I(inode).create_date = file->create_date;
        } else {
-               printk("HFS+-fs: bad catalog entry used to create inode\n");
+               printk(KERN_ERR "hfs: bad catalog entry used to create inode\n");
                res = -EIO;
        }
        return res;