All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jose R. Santos" <jrs@us.ibm.com>
To: Goswin von Brederlow <goswin-v-b@web.de>
Cc: Goswin von Brederlow <goswin-v-b@web.de>,
	"Theodore Ts'o" <tytso@mit.edu>,
	linux-ext4@vger.kernel.org
Subject: Re: [PATCH 15/15][e2fsprogs] 64-bit mke2fs cleanup
Date: Wed, 16 Jul 2008 10:30:56 -0500	[thread overview]
Message-ID: <20080716103056.2a635075@ichigo> (raw)
In-Reply-To: <87bq0x97mx.fsf@frosties.localdomain>

On Wed, 16 Jul 2008 17:21:58 +0200
Goswin von Brederlow <goswin-v-b@web.de> wrote:

> "Jose R. Santos" <jrs@us.ibm.com> writes:
> 
> > On Wed, 16 Jul 2008 14:50:14 +0200
> > Goswin von Brederlow <goswin-v-b@web.de> wrote:
> >
> >> "Jose R. Santos" <jrs@us.ibm.com> writes:
> >> 
> >> > diff --git a/misc/mke2fs.c b/misc/mke2fs.c
> >> > index 7171990..817be56 100644
> >> > --- a/misc/mke2fs.c
> >> > +++ b/misc/mke2fs.c
> >> > @@ -1402,12 +1402,12 @@ static void PRS(int argc, char *argv[])
> >> >  
> >> >  	fs_param.s_log_frag_size = fs_param.s_log_block_size;
> >> >  
> >> > -	if (noaction && fs_param.s_blocks_count) {
> >> > -		dev_size = fs_param.s_blocks_count;
> >> > +	if (noaction && ext2fs_blocks_count(&fs_param)) {
> >> > +		dev_size = ext2fs_blocks_count(&fs_param);
> >> >  		retval = 0;
> >> >  	} else {
> >> >  	retry:
> >> > -		retval = ext2fs_get_device_size(device_name,
> >> > +		retval = ext2fs_get_device_size2(device_name,
> >> >  						EXT2_BLOCK_SIZE(&fs_param),
> >> >  						&dev_size);
> >> >  		if ((retval == EFBIG) &&
> >> 
> >> You should not assume that ext2fs_get_device_size2() will return EFBIG
> >> if the size exceed 2^32 blocks. The point of ext2fs_get_device_size2()
> >> was to be able to support more than 2^32 blocks and the library
> >> function will certainly change to return larger numbers in the future.
> >> 
> >> So you need something like
> >> 
> >> if ((retval == EFBIG || dev_size >= (1ULL << 32)) &&
> >
> > No, ext2fs_get_device_size2() should return EFBIG size if the device is
> > larger than 48-bit.  I need to fix that on ext2fs_get_device_size2() but 
> > this check here is ok.
> >
> >> MfG
> >>         Goswin
> >
> > -JRS
> 
> Why? The decision what device size if too big depends on the features
> for this filesystem. By default 32bit is the limit, with
> EXT4_FEATURE_INCOMPAT_64BIT it is 48bit. (shouldn't that be named
> EXT4_FEATURE_INCOMPAT_48BIT?). Maybe later there will be a true 64bit
> feature.

You have a point.  The ext2fs_get_device_size2() should really be
concerned with what file system features are supported.  That is
outside of the scope of this routine.

I retract the previous statement I just reply to Ted. :)

> 
> If you make ext2fs_get_device_size2() return EFBIG for >48bit then you
> have to check for EFBIG and conditionally for 2^32 which makes the
> code more complex. Better to just check the actual size the device has
> in mke2fs.c.
> 
> Also the user might give a size that is actually small enough while
> the device would be too big. Say, with current mke2fs, you have a disk
> that is 16.000001TiB large. You could tell mke2fs to only use 2^32-1
> blocks. The EFBIG check prevents that.
> 
> See the patch I just send.
> 
> MfG
>         Goswin

-JRS

  reply	other threads:[~2008-07-16 15:31 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-15 16:50 [PATCH 00/15][e2fsprogs] Initial blk64_t capable API calls Jose R. Santos
2008-07-15 16:50 ` [PATCH 01/15][e2fsprogs] libext2fs: Add 64-bit support to the undo manager Jose R. Santos
2008-07-16 11:16   ` Goswin von Brederlow
2008-07-16 13:26     ` Theodore Tso
2008-07-15 16:50 ` [PATCH 02/15][e2fsprogs] Add ext2_off64_t type Jose R. Santos
2008-07-15 16:50 ` [PATCH 03/15][e2fsprogs] Add new blk64_t handling functions Jose R. Santos
2008-07-15 16:50 ` [PATCH 04/15][e2fsprogs] Use blk64_t for blocks in struct ext2_file Jose R. Santos
2008-07-15 16:50 ` [PATCH 05/15][e2fsprogs] Add 64-bit dirblock interface Jose R. Santos
2008-07-15 16:50 ` [PATCH 06/15][e2fsprogs] Add 64-bit alloc_stats interface Jose R. Santos
2008-07-15 16:50 ` [PATCH 07/15][e2fsprogs] Add 64-bit alloc interface Jose R. Santos
2008-07-15 16:50 ` [PATCH 08/15][e2fsprogs] Add 64-bit ext_attr interface Jose R. Santos
2008-07-15 16:50 ` [PATCH 09/15][e2fsprogs] Add 64-bit closefs interface Jose R. Santos
2008-07-15 16:51 ` [PATCH 10/15][e2fsprogs] Use new ext2fs_super_and_bgd_loc2 call in libext2fs Jose R. Santos
2008-07-15 16:51 ` [PATCH 11/15][e2fsprogs] Add 64-bit openfs interface Jose R. Santos
2008-07-15 16:51 ` [PATCH 12/15][e2fsprogs] Add ext2fs_div64_ceil() Jose R. Santos
2008-07-15 16:51 ` [PATCH 13/15][e2fsprogs] Add 64-bit getsize interface Jose R. Santos
2008-07-15 16:51 ` [PATCH 14/15][e2fsprogs] Add 64-bit mkjournal.c interface Jose R. Santos
2008-07-15 16:51 ` [PATCH 15/15][e2fsprogs] 64-bit mke2fs cleanup Jose R. Santos
2008-07-16 12:50   ` Goswin von Brederlow
2008-07-16 13:52     ` Goswin von Brederlow
2008-07-16 14:18       ` Jose R. Santos
2008-07-16 15:23         ` Goswin von Brederlow
2008-07-16 16:02           ` Jose R. Santos
2008-07-16 17:18             ` Theodore Tso
2008-07-16 18:03               ` Jose R. Santos
2008-07-16 18:58             ` Goswin von Brederlow
2008-07-16 14:09     ` Jose R. Santos
2008-07-16 14:54       ` Theodore Tso
2008-07-16 15:18         ` Jose R. Santos
2008-07-16 16:31           ` Theodore Tso
2008-07-16 17:26             ` Jose R. Santos
2008-07-16 19:07               ` Goswin von Brederlow
2008-07-16 19:40                 ` Jose R. Santos
2008-07-16 15:21       ` Goswin von Brederlow
2008-07-16 15:30         ` Jose R. Santos [this message]
2008-07-16 15:13   ` Goswin von Brederlow
2008-07-16 17:44     ` Jose R. Santos
2008-07-16 16:31   ` Goswin von Brederlow
2008-07-17 20:46   ` [PATCH 15/15][e2fsprogs] 64-bit mke2fs cleanup [NEW Version] Jose R. Santos
2008-07-18 11:35     ` Goswin von Brederlow
2008-07-18 15:15       ` Jose R. Santos
2008-07-18 19:59         ` Goswin von Brederlow
2008-07-21  5:04           ` Andreas Dilger
  -- strict thread matches above, loose matches on Subject: below --
2008-08-20 17:32 [PATCH 00/15] [e2fsprogs] Initial blk64_t capable API calls Jose R. Santos
2008-08-20 17:34 ` [PATCH 15/15][e2fsprogs] 64-bit mke2fs cleanup Jose R. Santos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080716103056.2a635075@ichigo \
    --to=jrs@us.ibm.com \
    --cc=goswin-v-b@web.de \
    --cc=linux-ext4@vger.kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.