This fixes a real brown paper bag bug which causes ext4 to choke on
file systems larger than 512GB. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABCAAGBQJRLmSkAAoJENNvdpvBGATwhf8P/1OqyhnveyeGPGHF3gvufx6W QLwVdIAWLIuLmltmgXhah/IugYOYv2msIFkmtpH/exx9mmXSfRpScZ1QQfPoIuW8 ovZDljbkDUGyYiZPvHBKnek+8EK8zwIq2TQYz1E87rvFqCg97EonwzjeUo6dcggv toQvHFBjCAKGUI9qGiTW9Xthqh+6MUYGw9Wh3CtUkOhNMqhyc2U0SxMuqoc32qVZ Sj8Yn4Sba5CRnMSqZbFEJh3B6JtDrsw7tTe/W0Oqu6X+z/ro9ky8Gg7OpxTyWzHI HyJKYPDwkS+Bj8n4oH3Q8EKs6mA5rzFrwwH0vNA/GErRdga2SEHxoaLhnP8LGhDi GrdZGOfOIAC6qwYaNA9G+uk3Zt73N+BurIgbUMExOLRz51ViTw8ep9j0mNvYoZLZ S977/SO4axtv34Gmsi3oi3zuy+zmHPRQnLpWo3bghPo0jIuSVl225zqIkkVf8jaE zpRUNvycymaCSEMc2daLXhJDKOO1Ll46wwsSZ7ppZqRBMGV4jp2c3I7sG5GNcB4Z TmxKoIVhXlCs1sD3cLXNpEwdpSA4NWDLFtfqNPyssyGrzafVIMH1cYUzAvP36Ymx mLFtSt5pnEnUF/C8Kb3Yowsh0kOdnkVmadgKdDa05fEmiwLd0oxGFIqed9zhhIcI vKEiSNphSdwxXPbGF7ZF =cuPi -----END PGP SIGNATURE----- Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Pull ext4 regression fix from Theodore Ts'o: "This fixes a real brown paper bag bug which causes ext4 to choke on file systems larger than 512GB." * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: ext4: fix extent status tree regression for file systems > 512GB
This commit is contained in:
commit
7bf2fbcdf5
1 changed files with 11 additions and 8 deletions
|
@ -20,10 +20,13 @@
|
|||
#define es_debug(fmt, ...) no_printk(fmt, ##__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#define EXTENT_STATUS_WRITTEN 0x80000000 /* written extent */
|
||||
#define EXTENT_STATUS_UNWRITTEN 0x40000000 /* unwritten extent */
|
||||
#define EXTENT_STATUS_DELAYED 0x20000000 /* delayed extent */
|
||||
#define EXTENT_STATUS_HOLE 0x10000000 /* hole */
|
||||
/*
|
||||
* These flags live in the high bits of extent_status.es_pblk
|
||||
*/
|
||||
#define EXTENT_STATUS_WRITTEN (1ULL << 63)
|
||||
#define EXTENT_STATUS_UNWRITTEN (1ULL << 62)
|
||||
#define EXTENT_STATUS_DELAYED (1ULL << 61)
|
||||
#define EXTENT_STATUS_HOLE (1ULL << 60)
|
||||
|
||||
#define EXTENT_STATUS_FLAGS (EXTENT_STATUS_WRITTEN | \
|
||||
EXTENT_STATUS_UNWRITTEN | \
|
||||
|
@ -58,22 +61,22 @@ extern int ext4_es_lookup_extent(struct inode *inode, ext4_lblk_t lblk,
|
|||
|
||||
static inline int ext4_es_is_written(struct extent_status *es)
|
||||
{
|
||||
return (es->es_pblk & EXTENT_STATUS_WRITTEN);
|
||||
return (es->es_pblk & EXTENT_STATUS_WRITTEN) != 0;
|
||||
}
|
||||
|
||||
static inline int ext4_es_is_unwritten(struct extent_status *es)
|
||||
{
|
||||
return (es->es_pblk & EXTENT_STATUS_UNWRITTEN);
|
||||
return (es->es_pblk & EXTENT_STATUS_UNWRITTEN) != 0;
|
||||
}
|
||||
|
||||
static inline int ext4_es_is_delayed(struct extent_status *es)
|
||||
{
|
||||
return (es->es_pblk & EXTENT_STATUS_DELAYED);
|
||||
return (es->es_pblk & EXTENT_STATUS_DELAYED) != 0;
|
||||
}
|
||||
|
||||
static inline int ext4_es_is_hole(struct extent_status *es)
|
||||
{
|
||||
return (es->es_pblk & EXTENT_STATUS_HOLE);
|
||||
return (es->es_pblk & EXTENT_STATUS_HOLE) != 0;
|
||||
}
|
||||
|
||||
static inline ext4_fsblk_t ext4_es_status(struct extent_status *es)
|
||||
|
|
Loading…
Reference in a new issue