]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Mar 2015 18:27:00 +0000 (10:27 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Mar 2015 18:27:00 +0000 (10:27 -0800)
added patches:
quota-store-maximum-space-limit-in-bytes.patch

queue-3.18/quota-store-maximum-space-limit-in-bytes.patch [new file with mode: 0644]
queue-3.18/series

diff --git a/queue-3.18/quota-store-maximum-space-limit-in-bytes.patch b/queue-3.18/quota-store-maximum-space-limit-in-bytes.patch
new file mode 100644 (file)
index 0000000..00a0f66
--- /dev/null
@@ -0,0 +1,122 @@
+From b10a08194c2b615955dfab2300331a90ae9344c7 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Thu, 9 Oct 2014 16:54:13 +0200
+Subject: quota: Store maximum space limit in bytes
+
+From: Jan Kara <jack@suse.cz>
+
+commit b10a08194c2b615955dfab2300331a90ae9344c7 upstream.
+
+Currently maximum space limit quota format supports is in blocks however
+since we store space limits in bytes, this is somewhat confusing. So
+store the maximum limit in bytes as well. Also rename the field to match
+the new unit and related inode field to match the new naming scheme.
+
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/ocfs2/quota_local.c |    4 ++--
+ fs/quota/dquot.c       |   18 ++++--------------
+ fs/quota/quota_v1.c    |    4 ++--
+ fs/quota/quota_v2.c    |   10 +++++-----
+ include/linux/quota.h  |    4 ++--
+ 5 files changed, 15 insertions(+), 25 deletions(-)
+
+--- a/fs/ocfs2/quota_local.c
++++ b/fs/ocfs2/quota_local.c
+@@ -701,8 +701,8 @@ static int ocfs2_local_read_info(struct
+       /* We don't need the lock and we have to acquire quota file locks
+        * which will later depend on this lock */
+       mutex_unlock(&sb_dqopt(sb)->dqio_mutex);
+-      info->dqi_maxblimit = 0x7fffffffffffffffLL;
+-      info->dqi_maxilimit = 0x7fffffffffffffffLL;
++      info->dqi_max_spc_limit = 0x7fffffffffffffffLL;
++      info->dqi_max_ino_limit = 0x7fffffffffffffffLL;
+       oinfo = kmalloc(sizeof(struct ocfs2_mem_dqinfo), GFP_NOFS);
+       if (!oinfo) {
+               mlog(ML_ERROR, "failed to allocate memory for ocfs2 quota"
+--- a/fs/quota/dquot.c
++++ b/fs/quota/dquot.c
+@@ -2380,16 +2380,6 @@ out:
+ }
+ EXPORT_SYMBOL(dquot_quota_on_mount);
+-static inline qsize_t qbtos(qsize_t blocks)
+-{
+-      return blocks << QIF_DQBLKSIZE_BITS;
+-}
+-
+-static inline qsize_t stoqb(qsize_t space)
+-{
+-      return (space + QIF_DQBLKSIZE - 1) >> QIF_DQBLKSIZE_BITS;
+-}
+-
+ /* Generic routine for getting common part of quota structure */
+ static void do_get_dqblk(struct dquot *dquot, struct qc_dqblk *di)
+ {
+@@ -2439,13 +2429,13 @@ static int do_set_dqblk(struct dquot *dq
+               return -EINVAL;
+       if (((di->d_fieldmask & QC_SPC_SOFT) &&
+-           stoqb(di->d_spc_softlimit) > dqi->dqi_maxblimit) ||
++           di->d_spc_softlimit > dqi->dqi_max_spc_limit) ||
+           ((di->d_fieldmask & QC_SPC_HARD) &&
+-           stoqb(di->d_spc_hardlimit) > dqi->dqi_maxblimit) ||
++           di->d_spc_hardlimit > dqi->dqi_max_spc_limit) ||
+           ((di->d_fieldmask & QC_INO_SOFT) &&
+-           (di->d_ino_softlimit > dqi->dqi_maxilimit)) ||
++           (di->d_ino_softlimit > dqi->dqi_max_ino_limit)) ||
+           ((di->d_fieldmask & QC_INO_HARD) &&
+-           (di->d_ino_hardlimit > dqi->dqi_maxilimit)))
++           (di->d_ino_hardlimit > dqi->dqi_max_ino_limit)))
+               return -ERANGE;
+       spin_lock(&dq_data_lock);
+--- a/fs/quota/quota_v1.c
++++ b/fs/quota/quota_v1.c
+@@ -169,8 +169,8 @@ static int v1_read_file_info(struct supe
+       }
+       ret = 0;
+       /* limits are stored as unsigned 32-bit data */
+-      dqopt->info[type].dqi_maxblimit = 0xffffffff;
+-      dqopt->info[type].dqi_maxilimit = 0xffffffff;
++      dqopt->info[type].dqi_max_spc_limit = 0xffffffffULL << QUOTABLOCK_BITS;
++      dqopt->info[type].dqi_max_ino_limit = 0xffffffff;
+       dqopt->info[type].dqi_igrace =
+                       dqblk.dqb_itime ? dqblk.dqb_itime : MAX_IQ_TIME;
+       dqopt->info[type].dqi_bgrace =
+--- a/fs/quota/quota_v2.c
++++ b/fs/quota/quota_v2.c
+@@ -117,12 +117,12 @@ static int v2_read_file_info(struct supe
+       qinfo = info->dqi_priv;
+       if (version == 0) {
+               /* limits are stored as unsigned 32-bit data */
+-              info->dqi_maxblimit = 0xffffffff;
+-              info->dqi_maxilimit = 0xffffffff;
++              info->dqi_max_spc_limit = 0xffffffffULL << QUOTABLOCK_BITS;
++              info->dqi_max_ino_limit = 0xffffffff;
+       } else {
+-              /* used space is stored as unsigned 64-bit value */
+-              info->dqi_maxblimit = 0xffffffffffffffffULL;    /* 2^64-1 */
+-              info->dqi_maxilimit = 0xffffffffffffffffULL;
++              /* used space is stored as unsigned 64-bit value in bytes */
++              info->dqi_max_spc_limit = 0xffffffffffffffffULL; /* 2^64-1 */
++              info->dqi_max_ino_limit = 0xffffffffffffffffULL;
+       }
+       info->dqi_bgrace = le32_to_cpu(dinfo.dqi_bgrace);
+       info->dqi_igrace = le32_to_cpu(dinfo.dqi_igrace);
+--- a/include/linux/quota.h
++++ b/include/linux/quota.h
+@@ -211,8 +211,8 @@ struct mem_dqinfo {
+       unsigned long dqi_flags;
+       unsigned int dqi_bgrace;
+       unsigned int dqi_igrace;
+-      qsize_t dqi_maxblimit;
+-      qsize_t dqi_maxilimit;
++      qsize_t dqi_max_spc_limit;
++      qsize_t dqi_max_ino_limit;
+       void *dqi_priv;
+ };
index 4fc2e541a4d527718567d19ff0582105b6f79bfa..0817d4408d35992dcc0839d8f99bdcd5ba806a65 100644 (file)
@@ -150,3 +150,4 @@ x86-efi-avoid-triple-faults-during-efi-mixed-mode-calls.patch
 x86-mm-aslr-fix-stack-randomization-on-64-bit-systems.patch
 x86-pmc-atom-assign-debugfs-node-as-soon-as-possible.patch
 x86-irq-fix-regression-caused-by-commit-b568b8601f05.patch
+quota-store-maximum-space-limit-in-bytes.patch