1 diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
2 index b03c26a..c907b45 100644
5 @@ -230,11 +230,12 @@ struct dqstats dqstats;
6 EXPORT_SYMBOL(dqstats);
8 static inline unsigned int
9 -hashfn(const struct super_block *sb, unsigned int id, int type)
10 +hashfn(const struct super_block *sb, qid_t id, int type)
14 - tmp = (((unsigned long)sb>>L1_CACHE_SHIFT) ^ id) * (MAXQUOTAS - type);
15 + tmp = (((unsigned long)sb>>L1_CACHE_SHIFT) ^ (unsigned long)id)
16 + * (MAXQUOTAS - type);
17 return (tmp + (tmp >> dq_hash_bits)) & dq_hash_mask;
20 @@ -254,7 +255,7 @@ static inline void remove_dquot_hash(struct dquot *dquot)
23 static struct dquot *find_dquot(unsigned int hashent, struct super_block *sb,
24 - unsigned int id, int type)
27 struct hlist_node *node;
29 @@ -738,7 +739,7 @@ static struct dquot *get_empty_dquot(struct super_block *sb, int type)
30 * a) checking for quota flags under dq_list_lock and
31 * b) getting a reference to dquot before we release dq_list_lock
33 -struct dquot *dqget(struct super_block *sb, unsigned int id, int type)
34 +struct dquot *dqget(struct super_block *sb, qid_t id, int type)
36 unsigned int hashent = hashfn(sb, id, type);
37 struct dquot *dquot = NULL, *empty = NULL;
38 @@ -1314,7 +1315,7 @@ EXPORT_SYMBOL(dquot_get_id);
40 int dquot_initialize(struct inode *inode, int type)
42 - unsigned int id = 0;
45 struct dquot *got[MAXQUOTAS] = { NULL, NULL };
46 struct super_block *sb = inode->i_sb;
47 diff --git a/include/linux/quota.h b/include/linux/quota.h
48 index eb080c3..029745d 100644
49 --- a/include/linux/quota.h
50 +++ b/include/linux/quota.h
51 @@ -182,7 +182,7 @@ enum {
53 #include <asm/atomic.h>
55 -typedef __kernel_uid32_t qid_t; /* Type in which we store ids in memory */
56 +typedef long long qid_t; /* Type in which we store ids in memory */
57 typedef long long qsize_t; /* Type in which we store sizes */
59 extern spinlock_t dq_data_lock;
60 @@ -273,7 +273,7 @@ struct dquot {
61 atomic_t dq_count; /* Use count */
62 wait_queue_head_t dq_wait_unused; /* Wait queue for dquot to become unused */
63 struct super_block *dq_sb; /* superblock this applies to */
64 - unsigned int dq_id; /* ID this applies to (uid, gid) */
65 + qid_t dq_id; /* ID this applies to (uid, gid) */
66 loff_t dq_off; /* Offset of dquot on disk */
67 unsigned long dq_flags; /* See DQ_* */
68 short dq_type; /* Type of quota */
69 diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h
70 index a4f248e..3c156d9 100644
71 --- a/include/linux/quotaops.h
72 +++ b/include/linux/quotaops.h
73 @@ -29,7 +29,7 @@ static inline void writeout_quota_sb(struct super_block *sb, int type)
74 qid_t dquot_get_id(struct inode *inode, int type);
75 int dquot_initialize(struct inode *inode, int type);
76 int dquot_drop(struct inode *inode);
77 -struct dquot *dqget(struct super_block *sb, unsigned int id, int type);
78 +struct dquot *dqget(struct super_block *sb, qid_t id, int type);
79 void dqput(struct dquot *dquot);
80 int dquot_scan_active(struct super_block *sb,
81 int (*fn)(struct dquot *dquot, unsigned long priv),