public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
* [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