mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
[XFS] Propagate quota file truncation errors.
Truncating the quota files can silently fail. Ensure that truncation errors are propagated to the callers. SGI-PV: 980084 SGI-Modid: xfs-linux-melb:xfs-kern:30791a Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Niv Sardi <xaiki@sgi.com> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
This commit is contained in:
parent
cb6edc26c3
commit
88ab020853
1 changed files with 7 additions and 8 deletions
|
@ -380,12 +380,11 @@ xfs_qm_scall_trunc_qfiles(
|
|||
xfs_mount_t *mp,
|
||||
uint flags)
|
||||
{
|
||||
int error;
|
||||
int error = 0, error2 = 0;
|
||||
xfs_inode_t *qip;
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return XFS_ERROR(EPERM);
|
||||
error = 0;
|
||||
if (!xfs_sb_version_hasquota(&mp->m_sb) || flags == 0) {
|
||||
qdprintk("qtrunc flags=%x m_qflags=%x\n", flags, mp->m_qflags);
|
||||
return XFS_ERROR(EINVAL);
|
||||
|
@ -393,22 +392,22 @@ xfs_qm_scall_trunc_qfiles(
|
|||
|
||||
if ((flags & XFS_DQ_USER) && mp->m_sb.sb_uquotino != NULLFSINO) {
|
||||
error = xfs_iget(mp, NULL, mp->m_sb.sb_uquotino, 0, 0, &qip, 0);
|
||||
if (! error) {
|
||||
(void) xfs_truncate_file(mp, qip);
|
||||
if (!error) {
|
||||
error = xfs_truncate_file(mp, qip);
|
||||
IRELE(qip);
|
||||
}
|
||||
}
|
||||
|
||||
if ((flags & (XFS_DQ_GROUP|XFS_DQ_PROJ)) &&
|
||||
mp->m_sb.sb_gquotino != NULLFSINO) {
|
||||
error = xfs_iget(mp, NULL, mp->m_sb.sb_gquotino, 0, 0, &qip, 0);
|
||||
if (! error) {
|
||||
(void) xfs_truncate_file(mp, qip);
|
||||
error2 = xfs_iget(mp, NULL, mp->m_sb.sb_gquotino, 0, 0, &qip, 0);
|
||||
if (!error2) {
|
||||
error2 = xfs_truncate_file(mp, qip);
|
||||
IRELE(qip);
|
||||
}
|
||||
}
|
||||
|
||||
return (error);
|
||||
return error ? error : error2;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue