]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
xfs_quota: fall back silently if XFS_GETNEXTQUOTA fails
authorZorro Lang <zlang@redhat.com>
Thu, 4 Aug 2016 01:29:49 +0000 (11:29 +1000)
committerDave Chinner <david@fromorbit.com>
Thu, 4 Aug 2016 01:29:49 +0000 (11:29 +1000)
After XFS_GETNEXTQUOTA feature has been merged into linux kernel and
xfsprogs, xfs_quota use Q_XGETNEXTQUOTA for report and dump, and
fall back to old XFS_GETQUOTA ioctl if XFS_GETNEXTQUOTA fails.

But when XFS_GETNEXTQUOTA fails, xfs_quota print a warning as
"XFS_GETQUOTA: Invalid argument". That's due to kernel can't
recognize XFS_GETNEXTQUOTA ioctl and return EINVAL. At this time,
the warning is helpless, xfs_quota just need to fall back.

Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
quota/report.c

index 59290e19867a610dac6d79d856fbf211beca0ded..70220b44dbc6565dafa12f1cb562a922789d795b 100644 (file)
@@ -90,8 +90,10 @@ dump_file(
        else
                cmd = XFS_GETQUOTA;
 
+       /* Fall back silently if XFS_GETNEXTQUOTA fails, warn on XFS_GETQUOTA */
        if (xfsquotactl(cmd, dev, type, id, (void *)&d) < 0) {
-               if (errno != ENOENT && errno != ENOSYS && errno != ESRCH)
+               if (errno != ENOENT && errno != ENOSYS && errno != ESRCH &&
+                   cmd == XFS_GETQUOTA)
                        perror("XFS_GETQUOTA");
                return 0;
        }
@@ -347,8 +349,10 @@ report_mount(
        else
                cmd = XFS_GETQUOTA;
 
+       /* Fall back silently if XFS_GETNEXTQUOTA fails, warn on XFS_GETQUOTA*/
        if (xfsquotactl(cmd, dev, type, id, (void *)&d) < 0) {
-               if (errno != ENOENT && errno != ENOSYS && errno != ESRCH)
+               if (errno != ENOENT && errno != ENOSYS && errno != ESRCH &&
+                   cmd == XFS_GETQUOTA)
                        perror("XFS_GETQUOTA");
                return 0;
        }