[LU-6464] ldiskfs: ext4_map_inode_page() ready for large blocks count Created: 14/Apr/15 Updated: 05/Jun/15 Resolved: 05/Jun/15 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | Lustre 2.8.0 |
| Type: | Bug | Priority: | Minor |
| Reporter: | Artem Blagodarenko (Inactive) | Assignee: | WC Triage |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | patch | ||
| Severity: | 3 |
| Rank (Obsolete): | 9223372036854775807 |
| Description |
|
2.6.2 ext4_map_inode_page function's parameter blocks should be 64bit long int ext4_map_inode_page(struct inode *inode, struct page *page, unsigned long *blocks, int create) But ext4_bmap returns sector_t value. static sector_t ext4_bmap(struct address_space *mapping, sector_t block)
blocks[i] = ext4_bmap(inode->i_mapping, iblock);
That depending on macros can be 32 or 64 bit long /** * The type used for indexing onto a disc or disc partition. * * Linux always considers sectors to be 512 bytes long independently * of the devices real block size. * * blkcnt_t is th type of the inode's block count. */ #ifdef CONFIG_LBDAF typedef u64 sector_t; typedef u64 blkcnt_t; #else typedef unsigned long sector_t; typedef unsigned long blkcnt_t; #endif CONFIG_LBDAF:Enable block devices or files of size 2TB and larger.This option is required to support the full capacity of large (2TB+) block devices, including RAID, disk, Network Block So we need to use sector_t for this array of blocks. This problem is actual for x86_32 systems only. |
| Comments |
| Comment by Gerrit Updater [ 14/Apr/15 ] |
|
Artem Blagodarenko (artem_blagodarenko@xyratex.com) uploaded a new patch: http://review.whamcloud.com/14463 |
| Comment by Gerrit Updater [ 05/Jun/15 ] |
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/14463/ |
| Comment by Peter Jones [ 05/Jun/15 ] |
|
Landed for 2.8 |