Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 38583
b: refs/heads/master
c: 666a2c5
h: refs/heads/master
i:
  38581: b8e4c03
  38579: 652b8a1
  38575: c072edf
v: v3
  • Loading branch information
Steven Whitehouse committed Jan 18, 2006
1 parent 7ef0a94 commit 0be5bd4
Show file tree
Hide file tree
Showing 9 changed files with 2 additions and 233 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: c73530a1f9633b2e7e6e19d0274b575febf8e8dc
refs/heads/master: 666a2c534cc6238932296a95c9e9c06ca3b73d97
81 changes: 1 addition & 80 deletions trunk/fs/gfs2/bmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -999,7 +999,7 @@ static int do_shrink(struct gfs2_inode *ip, uint64_t size,
}

/**
* gfs2_truncatei - make a file a give size
* gfs2_truncatei - make a file a given size
* @ip: the inode
* @size: the size to make the file
* @truncator: function to truncate the last partial block
Expand Down Expand Up @@ -1125,82 +1125,3 @@ int gfs2_write_alloc_required(struct gfs2_inode *ip, uint64_t offset,
return 0;
}

/**
* do_gfm - Copy out the dinode/indirect blocks of a file
* @ip: the file
* @dibh: the dinode buffer
* @bh: the indirect buffer we're looking at
* @top: the first pointer in the block
* @bottom: one more than the last pointer in the block
* @height: the height the block is at
* @data: a pointer to a struct gfs2_user_buffer structure
*
* If this is a journaled file, copy out the data too.
*
* Returns: errno
*/

static int do_gfm(struct gfs2_inode *ip, struct buffer_head *dibh,
struct buffer_head *bh, uint64_t *top, uint64_t *bottom,
unsigned int height, void *data)
{
struct gfs2_user_buffer *ub = (struct gfs2_user_buffer *)data;
int error;

error = gfs2_add_bh_to_ub(ub, bh);
if (error)
return error;

if (!S_ISDIR(ip->i_di.di_mode) ||
height + 1 != ip->i_di.di_height)
return 0;

for (; top < bottom; top++)
if (*top) {
struct buffer_head *data_bh;

error = gfs2_meta_read(ip->i_gl, be64_to_cpu(*top),
DIO_START | DIO_WAIT,
&data_bh);
if (error)
return error;

error = gfs2_add_bh_to_ub(ub, data_bh);

brelse(data_bh);

if (error)
return error;
}

return 0;
}

/**
* gfs2_get_file_meta - return all the metadata for a file
* @ip: the file
* @ub: the structure representing the meta
*
* Returns: errno
*/

int gfs2_get_file_meta(struct gfs2_inode *ip, struct gfs2_user_buffer *ub)
{
int error;

if (gfs2_is_stuffed(ip)) {
struct buffer_head *dibh;
error = gfs2_meta_inode_buffer(ip, &dibh);
if (!error) {
error = gfs2_add_bh_to_ub(ub, dibh);
brelse(dibh);
}
} else {
struct metapath mp;
find_metapath(ip, 0, &mp);
error = recursive_scan(ip, NULL, &mp, 0, 0, 1, do_gfm, ub);
}

return error;
}

2 changes: 0 additions & 2 deletions trunk/fs/gfs2/bmap.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,4 @@ void gfs2_write_calc_reserv(struct gfs2_inode *ip, unsigned int len,
int gfs2_write_alloc_required(struct gfs2_inode *ip, uint64_t offset,
unsigned int len, int *alloc_required);

int gfs2_get_file_meta(struct gfs2_inode *ip, struct gfs2_user_buffer *ub);

#endif /* __BMAP_DOT_H__ */
51 changes: 0 additions & 51 deletions trunk/fs/gfs2/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -2104,54 +2104,3 @@ int gfs2_diradd_alloc_required(struct gfs2_inode *dip, struct qstr *filename,
return error;
}

/**
* do_gdm - copy out one leaf (or list of leaves)
* @dip: the directory
* @index: the hash table offset in the directory
* @len: the number of pointers to this leaf
* @leaf_no: the leaf number
* @data: a pointer to a struct gfs2_user_buffer structure
*
* Returns: errno
*/

static int do_gdm(struct gfs2_inode *dip, uint32_t index, uint32_t len,
uint64_t leaf_no, void *data)
{
struct gfs2_user_buffer *ub = (struct gfs2_user_buffer *)data;
struct gfs2_leaf leaf;
struct buffer_head *bh;
uint64_t blk;
int error = 0;

for (blk = leaf_no; blk; blk = leaf.lf_next) {
error = get_leaf(dip, blk, &bh);
if (error)
break;

gfs2_leaf_in(&leaf, bh->b_data);

error = gfs2_add_bh_to_ub(ub, bh);

brelse(bh);

if (error)
break;
}

return error;
}

/**
* gfs2_get_dir_meta - return all the leaf blocks of a directory
* @dip: the directory
* @ub: the structure representing the meta
*
* Returns: errno
*/

int gfs2_get_dir_meta(struct gfs2_inode *dip, struct gfs2_user_buffer *ub)
{
return foreach_leaf(dip, do_gdm, ub);
}

2 changes: 0 additions & 2 deletions trunk/fs/gfs2/dir.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,4 @@ int gfs2_dir_exhash_dealloc(struct gfs2_inode *dip);
int gfs2_diradd_alloc_required(struct gfs2_inode *dip, struct qstr *filename,
int *alloc_required);

int gfs2_get_dir_meta(struct gfs2_inode *ip, struct gfs2_user_buffer *ub);

#endif /* __DIR_DOT_H__ */
57 changes: 0 additions & 57 deletions trunk/fs/gfs2/eattr.c
Original file line number Diff line number Diff line change
Expand Up @@ -1561,60 +1561,3 @@ int gfs2_ea_dealloc(struct gfs2_inode *ip)
return error;
}

/**
* gfs2_get_eattr_meta - return all the eattr blocks of a file
* @dip: the directory
* @ub: the structure representing the user buffer to copy to
*
* Returns: errno
*/

int gfs2_get_eattr_meta(struct gfs2_inode *ip, struct gfs2_user_buffer *ub)
{
struct buffer_head *bh;
int error;

error = gfs2_meta_read(ip->i_gl, ip->i_di.di_eattr,
DIO_START | DIO_WAIT, &bh);
if (error)
return error;

gfs2_add_bh_to_ub(ub, bh);

if (ip->i_di.di_flags & GFS2_DIF_EA_INDIRECT) {
struct buffer_head *eabh;
uint64_t *eablk, *end;

if (gfs2_metatype_check(ip->i_sbd, bh, GFS2_METATYPE_IN)) {
error = -EIO;
goto out;
}

eablk = (uint64_t *)(bh->b_data +
sizeof(struct gfs2_meta_header));
end = eablk + ip->i_sbd->sd_inptrs;

for (; eablk < end; eablk++) {
uint64_t bn;

if (!*eablk)
break;
bn = be64_to_cpu(*eablk);

error = gfs2_meta_read(ip->i_gl, bn,
DIO_START | DIO_WAIT, &eabh);
if (error)
break;
gfs2_add_bh_to_ub(ub, eabh);
brelse(eabh);
if (error)
break;
}
}

out:
brelse(bh);

return error;
}

2 changes: 0 additions & 2 deletions trunk/fs/gfs2/eattr.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,6 @@ int gfs2_ea_remove(struct gfs2_inode *ip, struct gfs2_ea_request *er);

int gfs2_ea_dealloc(struct gfs2_inode *ip);

int gfs2_get_eattr_meta(struct gfs2_inode *ip, struct gfs2_user_buffer *ub);

/* Exported to acl.c */

int gfs2_ea_find(struct gfs2_inode *ip,
Expand Down
30 changes: 0 additions & 30 deletions trunk/fs/gfs2/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,36 +221,6 @@ int gfs2_io_error_bh_i(struct gfs2_sbd *sdp, struct buffer_head *bh,
return rv;
}

/**
* gfs2_add_bh_to_ub - copy a buffer up to user space
* @ub: the structure representing where to copy
* @bh: the buffer
*
* Returns: errno
*/

int gfs2_add_bh_to_ub(struct gfs2_user_buffer *ub, struct buffer_head *bh)
{
uint64_t blkno = bh->b_blocknr;

if (ub->ub_count + sizeof(uint64_t) + bh->b_size > ub->ub_size)
return -ENOMEM;

if (copy_to_user(ub->ub_data + ub->ub_count,
&blkno,
sizeof(uint64_t)))
return -EFAULT;
ub->ub_count += sizeof(uint64_t);

if (copy_to_user(ub->ub_data + ub->ub_count,
bh->b_data,
bh->b_size))
return -EFAULT;
ub->ub_count += bh->b_size;

return 0;
}

void gfs2_icbit_munge(struct gfs2_sbd *sdp, unsigned char **bitmap,
unsigned int bit, int new_value)
{
Expand Down
8 changes: 0 additions & 8 deletions trunk/fs/gfs2/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,14 +152,6 @@ extern kmem_cache_t *gfs2_glock_cachep;
extern kmem_cache_t *gfs2_inode_cachep;
extern kmem_cache_t *gfs2_bufdata_cachep;

struct gfs2_user_buffer {
char __user *ub_data;
unsigned int ub_size;
unsigned int ub_count;
};

int gfs2_add_bh_to_ub(struct gfs2_user_buffer *ub, struct buffer_head *bh);

static inline unsigned int gfs2_tune_get_i(struct gfs2_tune *gt,
unsigned int *p)
{
Expand Down

0 comments on commit 0be5bd4

Please sign in to comment.