Re: Mounting block device fails.

Manish Katiyar <[email protected]>
Newsgroups gmane.linux.newbie,gmane.linux.kernel.kernelnewbies
Message-ID <[email protected]>
On Fri, Oct 9, 2009 at 11:28 AM, Manish Katiyar <[email protected]> wrote:
> On Fri, Oct 9, 2009 at 11:16 AM, Prasad Joshi <[email protected]> wrote:
>> Thanks Manish,
>>
>> The issue was with filesystem creation. It was not getting created
>> properly. I used dumpe2fs command to verify the file system. Actually
>> Superblock was written correctly but, few other fields like free block
>> and free inode list etc were incorrect
>>
>> It seems to be working properly now
>> # dumpe2fs /dev/ftl
>> ...
>> ...
>> Group 0: (Blocks 0-65527)
>>  Primary superblock at 0, Group descriptors at 1-1
>>  Reserved GDT blocks at 2-8
>>  Block bitmap at 9 (+9), Inode bitmap at 10 (+10)
>>  Inode table at 11-1034 (+11)
>>  64489 free blocks, 32757 free inodes, 2 directories
>>  Free blocks: 1039-65527
>>  Free inodes: 12-32768
>> Group 1: (Blocks 65528-131055)
>>  Backup superblock at 65528, Group descriptors at 65529-65529
>>  Reserved GDT blocks at 65530-65536
>>  Block bitmap at 65537 (+9), Inode bitmap at 65538 (+10)
>>  Inode table at 65539-66562 (+11)
>>  64493 free blocks, 32768 free inodes, 0 directories
>>  Free blocks: 66563-131055
>>  Free inodes: 32769-65536
>>
>> # mount
>> ...
>> ...
>> /dev/ftl on /mntpt type ext2 (rw,relatime,errors=continue)
>>
>>
>> The other problem which I am facing is with the blocksize.
>>
>> mkfs allows ext2 file system be created with blocksize=8192,
>> overriding the default 4096. But, when I try to mount the file system
>> it fails
>>
>> # mkfs -t ext2 -b 8192 /dev/ftl
>> Warning: blocksize 8192 not usable on most systems.
>> mke2fs 1.41.4 (27-Jan-2009)
>> mkfs.ext2: 8192-byte blocks too big for system (max 4096)
>> Proceed anyway? (y,n) y
>> Warning: 8192-byte blocks too big for system (max 4096), forced to continue
>> warning: 16 blocks unused.
>>
>> Filesystem label=
>> OS type: Linux
>> Block size=8192 (log=3)
>> Fragment size=8192 (log=3)
>> 65536 inodes, 131056 blocks
>> ....
>> ....
>>
>> # mount -t ext2 /dev/ftl /mntpt
>> [54658.092031] EXT2-fs: blocksize too small for device.
>> mount: mounting /dev/ftl on /mntpt failed: Invalid argument
>>
>> I tried specifying blocksize with the mount command, but it also fails

Have a look at these patches

http://lkml.indiana.edu/hypermail/linux/kernel/0708.3/1847.html


>>
>> # mount -t ext2 /dev/ftl /mntpt -o blocksize=8192
>> mount: mounting /dev/ftl on /mntpt failed: Invalid argument
>>
>> The above command fails in parsing the options passed to the command
>>
>> The section "Mount options for ext2" of mount manpage does not mention
>> blocksize option.
>
> Yes, there is no "blocksize" option in ext2. For a list of valid
> options see "tokens" table in ext2/super.c
>
>
>>
>> Is there anyway I can create ext2 filesystem with blocksize 8192?
>
> No ... as far as I know.
>
> Man  page of mke2fs says :
>
>     -b block-size
>              Specify  the  size of blocks in bytes.  Valid block-size
> values are 1024, 2048 and 4096 bytes per  block.
>
> And the kernel code says :
>
> int sb_set_blocksize(struct super_block *sb, int size)
> {
>        if (set_blocksize(sb->s_bdev, size))
>                return 0;
>        /* If we get here, we know size is power of two
>         * and it's value is between 512 and PAGE_SIZE */
>        sb->s_blocksize = size;
>        sb->s_blocksize_bits = blksize_bits(size);
>        return sb->s_blocksize;
> }
>
> and the PAGE_SIZE is 4096.
>
> Reiserfs supports blocksizes of 8192 , but its man page says :-
>
>      -b | --block-size N
>              N  is block size in bytes. It may only be set to a power
> of 2 within the 512-8192 interval.  Note
>              that current versions of the kernel ( 2.6.19 ) do NOT
> support any size other than 4096.
>
>
> But is there any specific reason you want to use block sizes of 8192 ?
>
>>
>> Thanks and Regards,
>> Prasad
>>
>> On Thu, Oct 8, 2009 at 6:41 PM, Manish Katiyar <[email protected]> wrote:
>>> On Thu, Oct 8, 2009 at 12:38 PM, Prasad Joshi <[email protected]> wrote:
>>>> Hi,
>>>>
>>>> I am working on translation layer for flash. For the purpose testing I am
>>>> using a disk file to simulate the flash behavior. So every read and write on
>>>> the block device finally goes to a disk file, something similar to loop
>>>> device, but in addition maintaining the flash property.
>>>>
>>>> I am able to create the file system on the device (/dev/ftl) but when I try
>>>> to mount the device it fails with error "Invalid Argument".
>>>
>>> From the code I can see -EINVAL can be returned at lot of places. You
>>> need to see dmesg to see the message which can help tracing.
>>>
>>>>
>>>> I thought it is failing to read the super block of the file systems, but it
>>>> seems like it did not fail in superblock read
>>>>
>>>> # strace -o out mount -t ext2 /dev/ftl /mntpt/
>>>> [  175.192033] Opening the device.
>>>> [  175.193599] IftlIoRead: offset=0x400 Length=0x400
>>>> [  175.193875] OffsetWithinPage: 400
>>>> [  175.195104] Read pos=1002535424, length=8192
>>>> [  175.195474] 0000 0001 0000 0004 3333 0000 eea5 0003 fff5 0000 0000 0000
>>>> 0002 0000 0002 0000 8000 0000 8000 0000 2000 0000 0000 0000 8a9e 4acd 0000
>>>> 0020 ef53 0001 0001 0000 8a9e 4acd 4e00 00ed 0000 0000 0001 0000 0000 0000
>>>> 000b 0000 0100 0000 0038 0000 0002 0000 0003 0000 a037 8e0c d6b3 de11 abb8
>>>> 0635 bff9 2b36 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
>>>> 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
>>>> 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
>>>> 0000 003f 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
>>>> 0000 a037 8f0c d6b3 de11 abb8 0635 bff9 2b36 0001 0000 0000 0000 0000 0000
>>>> 8a9e 4acd 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
>>>> 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
>>>> 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 001c 001c 0001
>>>> 0000 0000 0000 0000 0000 0000 0000 0000 0000 [  175.215929] Closing the
>>>> device.
>>>> mount: mounting /dev/ftl on /mntpt/ failed: Invalid argument
>>>>
>>>> I tried printing the data in hex format just to make sure proper ext2 magic
>>>> code in present in the superblock read from the flash device.  "ef53" is the
>>>> magic code of ext2 superblock, ftl device is correctly reading the magic
>>>> code
>>>>
>>>> # cat out
>>>> execve("/bin/mount", ["mount", "-t", "ext2", "/dev/ftl", "/mntpt/"], [/* 4
>>>> vars */]) = 0
>>>> uname({sys="Linux", node="(none)", ...}) = 0
>>>> brk(0)                                  = 0x72f000
>>>> brk(0x72ff40)                           = 0x72ff40
>>>> arch_prctl(ARCH_SET_FS, 0x72f880)       = 0
>>>> open("/dev/urandom", O_RDONLY)          = -1 ENOENT (No such file or
>>>> directory)
>>>> brk(0x750f40)                           = 0x750f40
>>>> brk(0x751000)                           = 0x751000
>>>> getuid()                                = 0
>>>> getuid()                                = 0
>>>> geteuid()                               = 0
>>>> stat("/dev/ftl", {st_mode=S_IFBLK|0644, st_rdev=makedev(254, 0), ...}) = 0
>>>> mount("/dev/ftl", "/mntpt/", "ext2", MS_SILENT, "") = -1 EINVAL (Invalid
>>>> argument)
>>>> vfork()                                 = 869
>>>> --- SIGCHLD (Child exited) @ 0 (0) ---
>>>> write(2, "mount: mounting /dev/ftl on /mntp"..., 61) = 61
>>>> exit_group(-1)                          = ?
>>>>
>>>> What could be the reason of failure of mount?
>>>>
>>>> Thanks and Regards,
>>>> Prasad
>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Thanks -
>>> Manish
>>> ==================================
>>> [$\*.^ -- I miss being one of them
>>> ==================================
>>>
>>
>
>
>
> --
> Thanks -
> Manish
> ==================================
> [$\*.^ -- I miss being one of them
> ==================================
>



-- 
Thanks -
Manish
==================================
[$\*.^ -- I miss being one of them
==================================
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.