* [PATCH] swap E2BIG for EFBIG in mount size checks
@ 2008-01-19 20:36 Eric Sandeen
2008-02-20 0:42 ` Eric Sandeen
0 siblings, 1 reply; 2+ messages in thread
From: Eric Sandeen @ 2008-01-19 20:36 UTC (permalink / raw)
To: xfs-oss
Mounting a too-big filesystem results in a very strange
"mount: Argument list too long" error message thanks to the use
of E2BIG vs. EFBIG.
Changing this should make the error message a little more helpful.
(Incidentally: why do we check for ENOSPC after a read, and convert
it to E[2F]BIG? It seems to be ancient code... And what would you
think of making "size check 1 failed" etc something more descriptive,
like "Sector count overflows" perhaps?)
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
---
Index: linux-2.6-xfs/fs/xfs/xfs_mount.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/xfs_mount.c
+++ linux-2.6-xfs/fs/xfs/xfs_mount.c
@@ -196,10 +196,10 @@ xfs_sb_validate_fsb_count(
#if XFS_BIG_BLKNOS /* Limited by ULONG_MAX of page cache index */
if (nblocks >> (PAGE_CACHE_SHIFT - sbp->sb_blocklog) > ULONG_MAX)
- return E2BIG;
+ return EFBIG;
#else /* Limited by UINT_MAX of sectors */
if (nblocks << (sbp->sb_blocklog - BBSHIFT) > UINT_MAX)
- return E2BIG;
+ return EFBIG;
#endif
return 0;
}
@@ -289,7 +289,7 @@ xfs_mount_validate_sb(
xfs_sb_validate_fsb_count(sbp, sbp->sb_rblocks)) {
xfs_fs_mount_cmn_err(flags,
"file system too large to be mounted on this system.");
- return XFS_ERROR(E2BIG);
+ return XFS_ERROR(EFBIG);
}
if (unlikely(sbp->sb_inprogress)) {
@@ -899,7 +899,7 @@ xfs_check_sizes(xfs_mount_t *mp, int mfs
d = (xfs_daddr_t)XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks);
if (XFS_BB_TO_FSB(mp, d) != mp->m_sb.sb_dblocks) {
cmn_err(CE_WARN, "XFS: size check 1 failed");
- return XFS_ERROR(E2BIG);
+ return XFS_ERROR(EFBIG);
}
error = xfs_read_buf(mp, mp->m_ddev_targp,
d - XFS_FSS_TO_BB(mp, 1),
@@ -909,7 +909,7 @@ xfs_check_sizes(xfs_mount_t *mp, int mfs
} else {
cmn_err(CE_WARN, "XFS: size check 2 failed");
if (error == ENOSPC)
- error = XFS_ERROR(E2BIG);
+ error = XFS_ERROR(EFBIG);
return error;
}
@@ -918,7 +918,7 @@ xfs_check_sizes(xfs_mount_t *mp, int mfs
d = (xfs_daddr_t)XFS_FSB_TO_BB(mp, mp->m_sb.sb_logblocks);
if (XFS_BB_TO_FSB(mp, d) != mp->m_sb.sb_logblocks) {
cmn_err(CE_WARN, "XFS: size check 3 failed");
- return XFS_ERROR(E2BIG);
+ return XFS_ERROR(EFBIG);
}
error = xfs_read_buf(mp, mp->m_logdev_targp,
d - XFS_FSB_TO_BB(mp, 1),
@@ -928,7 +928,7 @@ xfs_check_sizes(xfs_mount_t *mp, int mfs
} else {
cmn_err(CE_WARN, "XFS: size check 3 failed");
if (error == ENOSPC)
- error = XFS_ERROR(E2BIG);
+ error = XFS_ERROR(EFBIG);
return error;
}
}
Index: linux-2.6-xfs/fs/xfs/xfs_rtalloc.c
===================================================================
--- linux-2.6-xfs.orig/fs/xfs/xfs_rtalloc.c
+++ linux-2.6-xfs/fs/xfs/xfs_rtalloc.c
@@ -2236,7 +2236,7 @@ xfs_rtmount_init(
cmn_err(CE_WARN, "XFS: realtime mount -- %llu != %llu",
(unsigned long long) XFS_BB_TO_FSB(mp, d),
(unsigned long long) mp->m_sb.sb_rblocks);
- return XFS_ERROR(E2BIG);
+ return XFS_ERROR(EFBIG);
}
error = xfs_read_buf(mp, mp->m_rtdev_targp,
d - XFS_FSB_TO_BB(mp, 1),
@@ -2245,7 +2245,7 @@ xfs_rtmount_init(
cmn_err(CE_WARN,
"XFS: realtime mount -- xfs_read_buf failed, returned %d", error);
if (error == ENOSPC)
- return XFS_ERROR(E2BIG);
+ return XFS_ERROR(EFBIG);
return error;
}
xfs_buf_relse(bp);
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] swap E2BIG for EFBIG in mount size checks
2008-01-19 20:36 [PATCH] swap E2BIG for EFBIG in mount size checks Eric Sandeen
@ 2008-02-20 0:42 ` Eric Sandeen
0 siblings, 0 replies; 2+ messages in thread
From: Eric Sandeen @ 2008-02-20 0:42 UTC (permalink / raw)
To: xfs-oss
Eric Sandeen wrote:
> Mounting a too-big filesystem results in a very strange
> "mount: Argument list too long" error message thanks to the use
> of E2BIG vs. EFBIG.
>
> Changing this should make the error message a little more helpful.
Good idea? bad idea? crickets? :)
-Eric
> (Incidentally: why do we check for ENOSPC after a read, and convert
> it to E[2F]BIG? It seems to be ancient code... And what would you
> think of making "size check 1 failed" etc something more descriptive,
> like "Sector count overflows" perhaps?)
>
> Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
>
> ---
>
> Index: linux-2.6-xfs/fs/xfs/xfs_mount.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/xfs_mount.c
> +++ linux-2.6-xfs/fs/xfs/xfs_mount.c
> @@ -196,10 +196,10 @@ xfs_sb_validate_fsb_count(
>
> #if XFS_BIG_BLKNOS /* Limited by ULONG_MAX of page cache index */
> if (nblocks >> (PAGE_CACHE_SHIFT - sbp->sb_blocklog) > ULONG_MAX)
> - return E2BIG;
> + return EFBIG;
> #else /* Limited by UINT_MAX of sectors */
> if (nblocks << (sbp->sb_blocklog - BBSHIFT) > UINT_MAX)
> - return E2BIG;
> + return EFBIG;
> #endif
> return 0;
> }
> @@ -289,7 +289,7 @@ xfs_mount_validate_sb(
> xfs_sb_validate_fsb_count(sbp, sbp->sb_rblocks)) {
> xfs_fs_mount_cmn_err(flags,
> "file system too large to be mounted on this system.");
> - return XFS_ERROR(E2BIG);
> + return XFS_ERROR(EFBIG);
> }
>
> if (unlikely(sbp->sb_inprogress)) {
> @@ -899,7 +899,7 @@ xfs_check_sizes(xfs_mount_t *mp, int mfs
> d = (xfs_daddr_t)XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks);
> if (XFS_BB_TO_FSB(mp, d) != mp->m_sb.sb_dblocks) {
> cmn_err(CE_WARN, "XFS: size check 1 failed");
> - return XFS_ERROR(E2BIG);
> + return XFS_ERROR(EFBIG);
> }
> error = xfs_read_buf(mp, mp->m_ddev_targp,
> d - XFS_FSS_TO_BB(mp, 1),
> @@ -909,7 +909,7 @@ xfs_check_sizes(xfs_mount_t *mp, int mfs
> } else {
> cmn_err(CE_WARN, "XFS: size check 2 failed");
> if (error == ENOSPC)
> - error = XFS_ERROR(E2BIG);
> + error = XFS_ERROR(EFBIG);
> return error;
> }
>
> @@ -918,7 +918,7 @@ xfs_check_sizes(xfs_mount_t *mp, int mfs
> d = (xfs_daddr_t)XFS_FSB_TO_BB(mp, mp->m_sb.sb_logblocks);
> if (XFS_BB_TO_FSB(mp, d) != mp->m_sb.sb_logblocks) {
> cmn_err(CE_WARN, "XFS: size check 3 failed");
> - return XFS_ERROR(E2BIG);
> + return XFS_ERROR(EFBIG);
> }
> error = xfs_read_buf(mp, mp->m_logdev_targp,
> d - XFS_FSB_TO_BB(mp, 1),
> @@ -928,7 +928,7 @@ xfs_check_sizes(xfs_mount_t *mp, int mfs
> } else {
> cmn_err(CE_WARN, "XFS: size check 3 failed");
> if (error == ENOSPC)
> - error = XFS_ERROR(E2BIG);
> + error = XFS_ERROR(EFBIG);
> return error;
> }
> }
> Index: linux-2.6-xfs/fs/xfs/xfs_rtalloc.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/xfs_rtalloc.c
> +++ linux-2.6-xfs/fs/xfs/xfs_rtalloc.c
> @@ -2236,7 +2236,7 @@ xfs_rtmount_init(
> cmn_err(CE_WARN, "XFS: realtime mount -- %llu != %llu",
> (unsigned long long) XFS_BB_TO_FSB(mp, d),
> (unsigned long long) mp->m_sb.sb_rblocks);
> - return XFS_ERROR(E2BIG);
> + return XFS_ERROR(EFBIG);
> }
> error = xfs_read_buf(mp, mp->m_rtdev_targp,
> d - XFS_FSB_TO_BB(mp, 1),
> @@ -2245,7 +2245,7 @@ xfs_rtmount_init(
> cmn_err(CE_WARN,
> "XFS: realtime mount -- xfs_read_buf failed, returned %d", error);
> if (error == ENOSPC)
> - return XFS_ERROR(E2BIG);
> + return XFS_ERROR(EFBIG);
> return error;
> }
> xfs_buf_relse(bp);
>
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-02-20 0:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-19 20:36 [PATCH] swap E2BIG for EFBIG in mount size checks Eric Sandeen
2008-02-20 0:42 ` Eric Sandeen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox