Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[cascardo/linux.git] / fs / quota / dquot.c
index 6b45272..8f0acef 100644 (file)
@@ -893,6 +893,11 @@ out:
 }
 EXPORT_SYMBOL(dqget);
 
+static inline struct dquot **i_dquot(struct inode *inode)
+{
+       return inode->i_sb->s_op->get_dquots(inode);
+}
+
 static int dqinit_needed(struct inode *inode, int type)
 {
        int cnt;
@@ -900,9 +905,9 @@ static int dqinit_needed(struct inode *inode, int type)
        if (IS_NOQUOTA(inode))
                return 0;
        if (type != -1)
-               return !inode->i_dquot[type];
+               return !i_dquot(inode)[type];
        for (cnt = 0; cnt < MAXQUOTAS; cnt++)
-               if (!inode->i_dquot[cnt])
+               if (!i_dquot(inode)[cnt])
                        return 1;
        return 0;
 }
@@ -965,9 +970,9 @@ static void add_dquot_ref(struct super_block *sb, int type)
 static void remove_inode_dquot_ref(struct inode *inode, int type,
                                   struct list_head *tofree_head)
 {
-       struct dquot *dquot = inode->i_dquot[type];
+       struct dquot *dquot = i_dquot(inode)[type];
 
-       inode->i_dquot[type] = NULL;
+       i_dquot(inode)[type] = NULL;
        if (!dquot)
                return;
 
@@ -1402,7 +1407,7 @@ static void __dquot_initialize(struct inode *inode, int type)
                 * we check it without locking here to avoid unnecessary
                 * dqget()/dqput() calls.
                 */
-               if (inode->i_dquot[cnt])
+               if (i_dquot(inode)[cnt])
                        continue;
                init_needed = 1;
 
@@ -1433,8 +1438,8 @@ static void __dquot_initialize(struct inode *inode, int type)
                /* We could race with quotaon or dqget() could have failed */
                if (!got[cnt])
                        continue;
-               if (!inode->i_dquot[cnt]) {
-                       inode->i_dquot[cnt] = got[cnt];
+               if (!i_dquot(inode)[cnt]) {
+                       i_dquot(inode)[cnt] = got[cnt];
                        got[cnt] = NULL;
                        /*
                         * Make quota reservation system happy if someone
@@ -1442,7 +1447,7 @@ static void __dquot_initialize(struct inode *inode, int type)
                         */
                        rsv = inode_get_rsv_space(inode);
                        if (unlikely(rsv))
-                               dquot_resv_space(inode->i_dquot[cnt], rsv);
+                               dquot_resv_space(i_dquot(inode)[cnt], rsv);
                }
        }
 out_err:
@@ -1472,8 +1477,8 @@ static void __dquot_drop(struct inode *inode)
 
        spin_lock(&dq_data_lock);
        for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
-               put[cnt] = inode->i_dquot[cnt];
-               inode->i_dquot[cnt] = NULL;
+               put[cnt] = i_dquot(inode)[cnt];
+               i_dquot(inode)[cnt] = NULL;
        }
        spin_unlock(&dq_data_lock);
        dqput_all(put);
@@ -1494,7 +1499,7 @@ void dquot_drop(struct inode *inode)
         * add quota pointers back anyway.
         */
        for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
-               if (inode->i_dquot[cnt])
+               if (i_dquot(inode)[cnt])
                        break;
        }
 
@@ -1595,7 +1600,7 @@ int __dquot_alloc_space(struct inode *inode, qsize_t number, int flags)
 {
        int cnt, ret = 0, index;
        struct dquot_warn warn[MAXQUOTAS];
-       struct dquot **dquots = inode->i_dquot;
+       struct dquot **dquots = i_dquot(inode);
        int reserve = flags & DQUOT_SPACE_RESERVE;
 
        if (!dquot_active(inode)) {
@@ -1643,11 +1648,11 @@ EXPORT_SYMBOL(__dquot_alloc_space);
 /*
  * This operation can block, but only after everything is updated
  */
-int dquot_alloc_inode(const struct inode *inode)
+int dquot_alloc_inode(struct inode *inode)
 {
        int cnt, ret = 0, index;
        struct dquot_warn warn[MAXQUOTAS];
-       struct dquot * const *dquots = inode->i_dquot;
+       struct dquot * const *dquots = i_dquot(inode);
 
        if (!dquot_active(inode))
                return 0;
@@ -1696,14 +1701,14 @@ int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
        spin_lock(&dq_data_lock);
        /* Claim reserved quotas to allocated quotas */
        for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
-               if (inode->i_dquot[cnt])
-                       dquot_claim_reserved_space(inode->i_dquot[cnt],
+               if (i_dquot(inode)[cnt])
+                       dquot_claim_reserved_space(i_dquot(inode)[cnt],
                                                        number);
        }
        /* Update inode bytes */
        inode_claim_rsv_space(inode, number);
        spin_unlock(&dq_data_lock);
-       mark_all_dquot_dirty(inode->i_dquot);
+       mark_all_dquot_dirty(i_dquot(inode));
        srcu_read_unlock(&dquot_srcu, index);
        return 0;
 }
@@ -1725,14 +1730,14 @@ void dquot_reclaim_space_nodirty(struct inode *inode, qsize_t number)
        spin_lock(&dq_data_lock);
        /* Claim reserved quotas to allocated quotas */
        for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
-               if (inode->i_dquot[cnt])
-                       dquot_reclaim_reserved_space(inode->i_dquot[cnt],
+               if (i_dquot(inode)[cnt])
+                       dquot_reclaim_reserved_space(i_dquot(inode)[cnt],
                                                     number);
        }
        /* Update inode bytes */
        inode_reclaim_rsv_space(inode, number);
        spin_unlock(&dq_data_lock);
-       mark_all_dquot_dirty(inode->i_dquot);
+       mark_all_dquot_dirty(i_dquot(inode));
        srcu_read_unlock(&dquot_srcu, index);
        return;
 }
@@ -1745,7 +1750,7 @@ void __dquot_free_space(struct inode *inode, qsize_t number, int flags)
 {
        unsigned int cnt;
        struct dquot_warn warn[MAXQUOTAS];
-       struct dquot **dquots = inode->i_dquot;
+       struct dquot **dquots = i_dquot(inode);
        int reserve = flags & DQUOT_SPACE_RESERVE, index;
 
        if (!dquot_active(inode)) {
@@ -1784,11 +1789,11 @@ EXPORT_SYMBOL(__dquot_free_space);
 /*
  * This operation can block, but only after everything is updated
  */
-void dquot_free_inode(const struct inode *inode)
+void dquot_free_inode(struct inode *inode)
 {
        unsigned int cnt;
        struct dquot_warn warn[MAXQUOTAS];
-       struct dquot * const *dquots = inode->i_dquot;
+       struct dquot * const *dquots = i_dquot(inode);
        int index;
 
        if (!dquot_active(inode))
@@ -1865,7 +1870,7 @@ int __dquot_transfer(struct inode *inode, struct dquot **transfer_to)
                if (!sb_has_quota_active(inode->i_sb, cnt))
                        continue;
                is_valid[cnt] = 1;
-               transfer_from[cnt] = inode->i_dquot[cnt];
+               transfer_from[cnt] = i_dquot(inode)[cnt];
                ret = check_idq(transfer_to[cnt], 1, &warn_to[cnt]);
                if (ret)
                        goto over_quota;
@@ -1901,7 +1906,7 @@ int __dquot_transfer(struct inode *inode, struct dquot **transfer_to)
                dquot_incr_space(transfer_to[cnt], cur_space);
                dquot_resv_space(transfer_to[cnt], rsv_space);
 
-               inode->i_dquot[cnt] = transfer_to[cnt];
+               i_dquot(inode)[cnt] = transfer_to[cnt];
        }
        spin_unlock(&dq_data_lock);
 
@@ -2743,8 +2748,8 @@ static int __init dquot_init(void)
        for (i = 0; i < nr_hash; i++)
                INIT_HLIST_HEAD(dquot_hash + i);
 
-       printk("Dquot-cache hash table entries: %ld (order %ld, %ld bytes)\n",
-                       nr_hash, order, (PAGE_SIZE << order));
+       pr_info("VFS: Dquot-cache hash table entries: %ld (order %ld,"
+               " %ld bytes)\n", nr_hash, order, (PAGE_SIZE << order));
 
        register_shrinker(&dqcache_shrinker);