Re: [PATCH] xfs_quota: check report_mount return value

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 11, 2016 at 09:41:12PM -0500, Eric Sandeen wrote:
> The new call to report_mount doesn't check the return value
> like every other caller does...
> 
> Returning 1 means it printed something; if the terse flag
> is used and there is no usage, nothing gets printed.
> If we set the NO_HEADER_FLAG anyway, then we won't see
> the header for subsequent entries as we expect.
> 
> For example, project ID 0 has no usage in this case:
> 
> # xfs_quota -x -c "report -a" /mnt/test
> Project quota on /mnt/test (/dev/sdb1)
>                                Blocks                     
> Project ID       Used       Soft       Hard    Warn/Grace     
> ---------- -------------------------------------------------- 
> #0                  0          0          0     00 [--------]
> project          2048          4          4     00 [--none--]
> 
> So using the terse flag results in no header when it prints
> projects with usage:
> 
> # xfs_quota -x -c "report -t -a" /mnt/test
> project          2048          4          4     00 [--none--]
> 
> With this fix it prints the header as expected:
> 
> # xfs_quota -x -c "report -t -a" /mnt/test
> Project quota on /mnt/test (/dev/sdb1)
>                                Blocks                     
> Project ID       Used       Soft       Hard    Warn/Grace     
> ---------- -------------------------------------------------- 
> project          2048          4          4     00 [--none--]
> 
> 
> Addresses-Coverity-Id: 1361552
> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx>
> ---
> 
> diff --git a/quota/report.c b/quota/report.c
> index cc422d1..59290e1 100644
> --- a/quota/report.c
> +++ b/quota/report.c
> @@ -580,9 +580,9 @@ report_project_mount(
>  			 * Print default project quota, even if projid 0
>  			 * isn't defined
>  			 */
> -			report_mount(fp, 0, NULL, NULL, form, XFS_PROJ_QUOTA,
> -			             mount, flags);
> -			flags |= NO_HEADER_FLAG;
> +			if (report_mount(fp, 0, NULL, NULL,
> +					form, XFS_PROJ_QUOTA, mount, flags))
> +				flags |= NO_HEADER_FLAG;

Wow, you're right! TERSE MODE will return 0 if no any quota
limit:
        if (flags & TERSE_FLAG) {
                count = 0;
                if ((form & XFS_BLOCK_QUOTA) && d.d_bcount)
                        count++;
                if ((form & XFS_INODE_QUOTA) && d.d_icount)
                        count++;
                if ((form & XFS_RTBLOCK_QUOTA) && d.d_rtbcount)
                        count++;
                if (!count)
                        return 0;
        }

Thanks for fix my mistake. I can add TERSE report functional
test into my xfs/106 patch(which you're reviewing). Then it
can find bugs likes this ASAP.

Thanks,
Zorro

>  		}
>  
>  		setprent();
> 

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs



[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux