diff options
Diffstat (limited to 'fs/gfs2')
-rw-r--r-- | fs/gfs2/dir.c | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/fs/gfs2/dir.c b/fs/gfs2/dir.c index c77e18048d98..c32f7b3de662 100644 --- a/fs/gfs2/dir.c +++ b/fs/gfs2/dir.c | |||
@@ -397,11 +397,11 @@ static int dirent_next(struct gfs2_inode *dip, struct buffer_head *bh, | |||
397 | { | 397 | { |
398 | struct gfs2_dirent *tmp, *cur; | 398 | struct gfs2_dirent *tmp, *cur; |
399 | char *bh_end; | 399 | char *bh_end; |
400 | uint32_t cur_rec_len; | 400 | uint16_t cur_rec_len; |
401 | 401 | ||
402 | cur = *dent; | 402 | cur = *dent; |
403 | bh_end = bh->b_data + bh->b_size; | 403 | bh_end = bh->b_data + bh->b_size; |
404 | cur_rec_len = be32_to_cpu(cur->de_rec_len); | 404 | cur_rec_len = be16_to_cpu(cur->de_rec_len); |
405 | 405 | ||
406 | if ((char *)cur + cur_rec_len >= bh_end) { | 406 | if ((char *)cur + cur_rec_len >= bh_end) { |
407 | if ((char *)cur + cur_rec_len > bh_end) { | 407 | if ((char *)cur + cur_rec_len > bh_end) { |
@@ -413,7 +413,7 @@ static int dirent_next(struct gfs2_inode *dip, struct buffer_head *bh, | |||
413 | 413 | ||
414 | tmp = (struct gfs2_dirent *)((char *)cur + cur_rec_len); | 414 | tmp = (struct gfs2_dirent *)((char *)cur + cur_rec_len); |
415 | 415 | ||
416 | if ((char *)tmp + be32_to_cpu(tmp->de_rec_len) > bh_end) { | 416 | if ((char *)tmp + be16_to_cpu(tmp->de_rec_len) > bh_end) { |
417 | gfs2_consist_inode(dip); | 417 | gfs2_consist_inode(dip); |
418 | return -EIO; | 418 | return -EIO; |
419 | } | 419 | } |
@@ -440,7 +440,7 @@ static int dirent_next(struct gfs2_inode *dip, struct buffer_head *bh, | |||
440 | static void dirent_del(struct gfs2_inode *dip, struct buffer_head *bh, | 440 | static void dirent_del(struct gfs2_inode *dip, struct buffer_head *bh, |
441 | struct gfs2_dirent *prev, struct gfs2_dirent *cur) | 441 | struct gfs2_dirent *prev, struct gfs2_dirent *cur) |
442 | { | 442 | { |
443 | uint32_t cur_rec_len, prev_rec_len; | 443 | uint16_t cur_rec_len, prev_rec_len; |
444 | 444 | ||
445 | if (!cur->de_inum.no_addr) { | 445 | if (!cur->de_inum.no_addr) { |
446 | gfs2_consist_inode(dip); | 446 | gfs2_consist_inode(dip); |
@@ -460,8 +460,8 @@ static void dirent_del(struct gfs2_inode *dip, struct buffer_head *bh, | |||
460 | 460 | ||
461 | /* Combine this dentry with the previous one. */ | 461 | /* Combine this dentry with the previous one. */ |
462 | 462 | ||
463 | prev_rec_len = be32_to_cpu(prev->de_rec_len); | 463 | prev_rec_len = be16_to_cpu(prev->de_rec_len); |
464 | cur_rec_len = be32_to_cpu(cur->de_rec_len); | 464 | cur_rec_len = be16_to_cpu(cur->de_rec_len); |
465 | 465 | ||
466 | if ((char *)prev + prev_rec_len != (char *)cur) | 466 | if ((char *)prev + prev_rec_len != (char *)cur) |
467 | gfs2_consist_inode(dip); | 467 | gfs2_consist_inode(dip); |
@@ -469,7 +469,7 @@ static void dirent_del(struct gfs2_inode *dip, struct buffer_head *bh, | |||
469 | gfs2_consist_inode(dip); | 469 | gfs2_consist_inode(dip); |
470 | 470 | ||
471 | prev_rec_len += cur_rec_len; | 471 | prev_rec_len += cur_rec_len; |
472 | prev->de_rec_len = cpu_to_be32(prev_rec_len); | 472 | prev->de_rec_len = cpu_to_be16(prev_rec_len); |
473 | } | 473 | } |
474 | 474 | ||
475 | /** | 475 | /** |
@@ -513,7 +513,7 @@ int gfs2_dirent_alloc(struct gfs2_inode *dip, struct buffer_head *bh, | |||
513 | gfs2_trans_add_bh(dip->i_gl, bh, 1); | 513 | gfs2_trans_add_bh(dip->i_gl, bh, 1); |
514 | 514 | ||
515 | dent->de_rec_len = bh->b_size - offset; | 515 | dent->de_rec_len = bh->b_size - offset; |
516 | dent->de_rec_len = cpu_to_be32(dent->de_rec_len); | 516 | dent->de_rec_len = cpu_to_be16(dent->de_rec_len); |
517 | dent->de_name_len = name_len; | 517 | dent->de_name_len = name_len; |
518 | 518 | ||
519 | *dent_out = dent; | 519 | *dent_out = dent; |
@@ -521,9 +521,10 @@ int gfs2_dirent_alloc(struct gfs2_inode *dip, struct buffer_head *bh, | |||
521 | } | 521 | } |
522 | 522 | ||
523 | do { | 523 | do { |
524 | uint32_t cur_rec_len, cur_name_len; | 524 | uint16_t cur_rec_len; |
525 | uint32_t cur_name_len; | ||
525 | 526 | ||
526 | cur_rec_len = be32_to_cpu(dent->de_rec_len); | 527 | cur_rec_len = be16_to_cpu(dent->de_rec_len); |
527 | cur_name_len = dent->de_name_len; | 528 | cur_name_len = dent->de_name_len; |
528 | 529 | ||
529 | if ((!dent->de_inum.no_addr && cur_rec_len >= rec_len) || | 530 | if ((!dent->de_inum.no_addr && cur_rec_len >= rec_len) || |
@@ -536,11 +537,11 @@ int gfs2_dirent_alloc(struct gfs2_inode *dip, struct buffer_head *bh, | |||
536 | memset(new, 0, sizeof(struct gfs2_dirent)); | 537 | memset(new, 0, sizeof(struct gfs2_dirent)); |
537 | 538 | ||
538 | new->de_rec_len = cur_rec_len - GFS2_DIRENT_SIZE(cur_name_len); | 539 | new->de_rec_len = cur_rec_len - GFS2_DIRENT_SIZE(cur_name_len); |
539 | new->de_rec_len = cpu_to_be32(new->de_rec_len); | 540 | new->de_rec_len = cpu_to_be16(new->de_rec_len); |
540 | new->de_name_len = name_len; | 541 | new->de_name_len = name_len; |
541 | 542 | ||
542 | dent->de_rec_len = cur_rec_len - be32_to_cpu(new->de_rec_len); | 543 | dent->de_rec_len = cur_rec_len - be16_to_cpu(new->de_rec_len); |
543 | dent->de_rec_len = cpu_to_be32(dent->de_rec_len); | 544 | dent->de_rec_len = cpu_to_be16(dent->de_rec_len); |
544 | 545 | ||
545 | *dent_out = new; | 546 | *dent_out = new; |
546 | return 0; | 547 | return 0; |
@@ -589,9 +590,10 @@ static int dirent_fits(struct gfs2_inode *dip, struct buffer_head *bh, | |||
589 | return 1; | 590 | return 1; |
590 | 591 | ||
591 | do { | 592 | do { |
592 | uint32_t cur_rec_len, cur_name_len; | 593 | uint16_t cur_rec_len; |
594 | uint32_t cur_name_len; | ||
593 | 595 | ||
594 | cur_rec_len = be32_to_cpu(dent->de_rec_len); | 596 | cur_rec_len = be16_to_cpu(dent->de_rec_len); |
595 | cur_name_len = dent->de_name_len; | 597 | cur_name_len = dent->de_name_len; |
596 | 598 | ||
597 | if ((!dent->de_inum.no_addr && cur_rec_len >= rec_len) || | 599 | if ((!dent->de_inum.no_addr && cur_rec_len >= rec_len) || |
@@ -832,10 +834,10 @@ static int dir_make_exhash(struct gfs2_inode *dip) | |||
832 | /* Adjust the last dirent's record length | 834 | /* Adjust the last dirent's record length |
833 | (Remember that dent still points to the last entry.) */ | 835 | (Remember that dent still points to the last entry.) */ |
834 | 836 | ||
835 | dent->de_rec_len = be32_to_cpu(dent->de_rec_len) + | 837 | dent->de_rec_len = be16_to_cpu(dent->de_rec_len) + |
836 | sizeof(struct gfs2_dinode) - | 838 | sizeof(struct gfs2_dinode) - |
837 | sizeof(struct gfs2_leaf); | 839 | sizeof(struct gfs2_leaf); |
838 | dent->de_rec_len = cpu_to_be32(dent->de_rec_len); | 840 | dent->de_rec_len = cpu_to_be16(dent->de_rec_len); |
839 | 841 | ||
840 | brelse(bh); | 842 | brelse(bh); |
841 | 843 | ||