lkml.org 
[lkml]   [2015]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 028/165] xfs: Fix quota type in quota structures when reusing quota file
    Date
    3.16.7-ckt9 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Jan Kara <jack@suse.cz>

    commit dfcc70a8c868fe03276fa59864149708fb41930b upstream.

    For filesystems without separate project quota inode field in the
    superblock we just reuse project quota file for group quotas (and vice
    versa) if project quota file is allocated and we need group quota file.
    When we reuse the file, quota structures on disk suddenly have wrong
    type stored in d_flags though. Nobody really cares about this (although
    structure type reported to userspace was wrong as well) except
    that after commit 14bf61ffe6ac (quota: Switch ->get_dqblk() and
    ->set_dqblk() to use bytes as space units) assertion in
    xfs_qm_scall_getquota() started to trigger on xfs/106 test (apparently I
    was testing without XFS_DEBUG so I didn't notice when submitting the
    above commit).

    Fix the problem by properly resetting ddq->d_flags when running quotacheck
    for a quota file.

    Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    fs/xfs/xfs_qm.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c
    index 6c51e2f97c0a..7347df393225 100644
    --- a/fs/xfs/xfs_qm.c
    +++ b/fs/xfs/xfs_qm.c
    @@ -937,6 +937,11 @@ xfs_qm_reset_dqcounts(
    */
    xfs_dqcheck(mp, ddq, id+j, type, XFS_QMOPT_DQREPAIR,
    "xfs_quotacheck");
    + /*
    + * Reset type in case we are reusing group quota file for
    + * project quotas or vice versa
    + */
    + ddq->d_flags = type;
    ddq->d_bcount = 0;
    ddq->d_icount = 0;
    ddq->d_rtbcount = 0;

    \
     
     \ /
      Last update: 2015-03-25 16:01    [W:4.352 / U:0.524 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site