diff options
Diffstat (limited to 'fs/inode.c')
-rw-r--r-- | fs/inode.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/inode.c b/fs/inode.c index 410f235c337b..df2ef15d03d2 100644 --- a/fs/inode.c +++ b/fs/inode.c | |||
@@ -524,7 +524,12 @@ repeat: | |||
524 | */ | 524 | */ |
525 | struct inode *new_inode(struct super_block *sb) | 525 | struct inode *new_inode(struct super_block *sb) |
526 | { | 526 | { |
527 | static unsigned long last_ino; | 527 | /* |
528 | * On a 32bit, non LFS stat() call, glibc will generate an EOVERFLOW | ||
529 | * error if st_ino won't fit in target struct field. Use 32bit counter | ||
530 | * here to attempt to avoid that. | ||
531 | */ | ||
532 | static unsigned int last_ino; | ||
528 | struct inode * inode; | 533 | struct inode * inode; |
529 | 534 | ||
530 | spin_lock_prefetch(&inode_lock); | 535 | spin_lock_prefetch(&inode_lock); |
@@ -683,7 +688,12 @@ static unsigned long hash(struct super_block *sb, unsigned long hashval) | |||
683 | */ | 688 | */ |
684 | ino_t iunique(struct super_block *sb, ino_t max_reserved) | 689 | ino_t iunique(struct super_block *sb, ino_t max_reserved) |
685 | { | 690 | { |
686 | static ino_t counter; | 691 | /* |
692 | * On a 32bit, non LFS stat() call, glibc will generate an EOVERFLOW | ||
693 | * error if st_ino won't fit in target struct field. Use 32bit counter | ||
694 | * here to attempt to avoid that. | ||
695 | */ | ||
696 | static unsigned int counter; | ||
687 | struct inode *inode; | 697 | struct inode *inode; |
688 | struct hlist_head *head; | 698 | struct hlist_head *head; |
689 | ino_t res; | 699 | ino_t res; |