ext4: Use unsigned int for blocksize in dx_make_map() and dx_pack_dirents()
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
e187c6588d
commit
8bad4597c2
|
@ -161,12 +161,12 @@ static struct dx_frame *dx_probe(const struct qstr *d_name,
|
||||||
struct dx_frame *frame,
|
struct dx_frame *frame,
|
||||||
int *err);
|
int *err);
|
||||||
static void dx_release(struct dx_frame *frames);
|
static void dx_release(struct dx_frame *frames);
|
||||||
static int dx_make_map(struct ext4_dir_entry_2 *de, int size,
|
static int dx_make_map(struct ext4_dir_entry_2 *de, unsigned blocksize,
|
||||||
struct dx_hash_info *hinfo, struct dx_map_entry map[]);
|
struct dx_hash_info *hinfo, struct dx_map_entry map[]);
|
||||||
static void dx_sort_map(struct dx_map_entry *map, unsigned count);
|
static void dx_sort_map(struct dx_map_entry *map, unsigned count);
|
||||||
static struct ext4_dir_entry_2 *dx_move_dirents(char *from, char *to,
|
static struct ext4_dir_entry_2 *dx_move_dirents(char *from, char *to,
|
||||||
struct dx_map_entry *offsets, int count);
|
struct dx_map_entry *offsets, int count);
|
||||||
static struct ext4_dir_entry_2* dx_pack_dirents(char *base, int size);
|
static struct ext4_dir_entry_2* dx_pack_dirents(char *base, unsigned blocksize);
|
||||||
static void dx_insert_block(struct dx_frame *frame,
|
static void dx_insert_block(struct dx_frame *frame,
|
||||||
u32 hash, ext4_lblk_t block);
|
u32 hash, ext4_lblk_t block);
|
||||||
static int ext4_htree_next_block(struct inode *dir, __u32 hash,
|
static int ext4_htree_next_block(struct inode *dir, __u32 hash,
|
||||||
|
@ -713,15 +713,15 @@ errout:
|
||||||
* Create map of hash values, offsets, and sizes, stored at end of block.
|
* Create map of hash values, offsets, and sizes, stored at end of block.
|
||||||
* Returns number of entries mapped.
|
* Returns number of entries mapped.
|
||||||
*/
|
*/
|
||||||
static int dx_make_map (struct ext4_dir_entry_2 *de, int size,
|
static int dx_make_map(struct ext4_dir_entry_2 *de, unsigned blocksize,
|
||||||
struct dx_hash_info *hinfo, struct dx_map_entry *map_tail)
|
struct dx_hash_info *hinfo,
|
||||||
|
struct dx_map_entry *map_tail)
|
||||||
{
|
{
|
||||||
int count = 0;
|
int count = 0;
|
||||||
char *base = (char *) de;
|
char *base = (char *) de;
|
||||||
struct dx_hash_info h = *hinfo;
|
struct dx_hash_info h = *hinfo;
|
||||||
|
|
||||||
while ((char *) de < base + size)
|
while ((char *) de < base + blocksize) {
|
||||||
{
|
|
||||||
if (de->name_len && de->inode) {
|
if (de->name_len && de->inode) {
|
||||||
ext4fs_dirhash(de->name, de->name_len, &h);
|
ext4fs_dirhash(de->name, de->name_len, &h);
|
||||||
map_tail--;
|
map_tail--;
|
||||||
|
@ -1130,13 +1130,13 @@ dx_move_dirents(char *from, char *to, struct dx_map_entry *map, int count)
|
||||||
* Compact each dir entry in the range to the minimal rec_len.
|
* Compact each dir entry in the range to the minimal rec_len.
|
||||||
* Returns pointer to last entry in range.
|
* Returns pointer to last entry in range.
|
||||||
*/
|
*/
|
||||||
static struct ext4_dir_entry_2* dx_pack_dirents(char *base, int size)
|
static struct ext4_dir_entry_2* dx_pack_dirents(char *base, unsigned blocksize)
|
||||||
{
|
{
|
||||||
struct ext4_dir_entry_2 *next, *to, *prev, *de = (struct ext4_dir_entry_2 *) base;
|
struct ext4_dir_entry_2 *next, *to, *prev, *de = (struct ext4_dir_entry_2 *) base;
|
||||||
unsigned rec_len = 0;
|
unsigned rec_len = 0;
|
||||||
|
|
||||||
prev = to = de;
|
prev = to = de;
|
||||||
while ((char*)de < base + size) {
|
while ((char*)de < base + blocksize) {
|
||||||
next = ext4_next_entry(de);
|
next = ext4_next_entry(de);
|
||||||
if (de->inode && de->name_len) {
|
if (de->inode && de->name_len) {
|
||||||
rec_len = EXT4_DIR_REC_LEN(de->name_len);
|
rec_len = EXT4_DIR_REC_LEN(de->name_len);
|
||||||
|
|
Loading…
Reference in New Issue