Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 185837
b: refs/heads/master
c: 5d952b8
h: refs/heads/master
i:
  185835: 3ac4188
v: v3
  • Loading branch information
Boaz Harrosh committed Feb 28, 2010
1 parent 7e782f3 commit e7110b6
Show file tree
Hide file tree
Showing 5 changed files with 334 additions and 84 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d9c740d2253e75db8cef8f87a3125c450f3ebd82
refs/heads/master: 5d952b8391692553c31e620a92d6e09262a9a307
11 changes: 11 additions & 0 deletions trunk/fs/exofs/exofs.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,14 @@
struct exofs_layout {
osd_id s_pid; /* partition ID of file system*/

/* Our way of looking at the data_map */
unsigned stripe_unit;
unsigned mirrors_p1;

unsigned group_width;

enum exofs_inode_layout_gen_functions lay_func;

unsigned s_numdevs; /* Num of devices in array */
struct osd_dev *s_ods[0]; /* Variable length */
};
Expand Down Expand Up @@ -133,6 +141,9 @@ struct exofs_io_state {
struct exofs_per_dev_state {
struct osd_request *or;
struct bio *bio;
loff_t offset;
unsigned length;
unsigned dev;
} per_dev[];
};

Expand Down
26 changes: 4 additions & 22 deletions trunk/fs/exofs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -869,18 +869,17 @@ static const struct osd_attr g_attr_inode_dir_layout = ATTR_DEF(
0);

/*
* Read an inode from the OSD, and return it as is. We also return the size
* attribute in the 'obj_size' argument.
* Read the Linux inode info from the OSD, and return it as is. In exofs the
* inode info is in an application specific page/attribute of the osd-object.
*/
static int exofs_get_inode(struct super_block *sb, struct exofs_i_info *oi,
struct exofs_fcb *inode, uint64_t *obj_size)
struct exofs_fcb *inode)
{
struct exofs_sb_info *sbi = sb->s_fs_info;
struct osd_attr attrs[] = {
[0] = g_attr_inode_data,
[1] = g_attr_inode_file_layout,
[2] = g_attr_inode_dir_layout,
[3] = g_attr_logical_length,
};
struct exofs_io_state *ios;
struct exofs_on_disk_inode_layout *layout;
Expand Down Expand Up @@ -944,15 +943,6 @@ static int exofs_get_inode(struct super_block *sb, struct exofs_i_info *oi,
}
}

*obj_size = ~0;
ret = extract_attr_from_ios(ios, &attrs[3]);
if (ret) {
EXOFS_ERR("%s: extract_attr of logical_length failed\n",
__func__);
goto out;
}
*obj_size = get_unaligned_be64(attrs[3].val_ptr);

out:
exofs_put_io_state(ios);
return ret;
Expand All @@ -971,7 +961,6 @@ struct inode *exofs_iget(struct super_block *sb, unsigned long ino)
struct exofs_i_info *oi;
struct exofs_fcb fcb;
struct inode *inode;
uint64_t obj_size;
int ret;

inode = iget_locked(sb, ino);
Expand All @@ -983,7 +972,7 @@ struct inode *exofs_iget(struct super_block *sb, unsigned long ino)
__oi_init(oi);

/* read the inode from the osd */
ret = exofs_get_inode(sb, oi, &fcb, &obj_size);
ret = exofs_get_inode(sb, oi, &fcb);
if (ret)
goto bad_inode;

Expand All @@ -1004,13 +993,6 @@ struct inode *exofs_iget(struct super_block *sb, unsigned long ino)
inode->i_blkbits = EXOFS_BLKSHIFT;
inode->i_generation = le32_to_cpu(fcb.i_generation);

if ((inode->i_size != obj_size) &&
(!exofs_inode_is_fast_symlink(inode))) {
EXOFS_ERR("WARNING: Size of inode=%llu != object=%llu\n",
inode->i_size, _LLU(obj_size));
/* FIXME: call exofs_inode_recovery() */
}

oi->i_dir_start_lookup = 0;

if ((inode->i_nlink == 0) && (inode->i_mode == 0)) {
Expand Down
Loading

0 comments on commit e7110b6

Please sign in to comment.