linux-newbie.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Prasad Joshi <prasadjoshi124@gmail.com>
To: Manish Katiyar <mkatiyar@gmail.com>
Cc: linux-newbie@vger.kernel.org, Kernelnewbies <kernelnewbies@nl.linux.org>
Subject: Re: Mounting block device fails.
Date: Fri, 9 Oct 2009 12:40:30 +0530	[thread overview]
Message-ID: <fe291c8c0910090010q3af67e8dhb01e93f271170012@mail.gmail.com> (raw)
In-Reply-To: <ea11fea30910082304q7270cff4je0a6e025f074cd08@mail.gmail.com>

On Fri, Oct 9, 2009 at 11:34 AM, Manish Katiyar <mkatiyar@gmail.com> wrote:
> On Fri, Oct 9, 2009 at 11:28 AM, Manish Katiyar <mkatiyar@gmail.com> wrote:
>> On Fri, Oct 9, 2009 at 11:16 AM, Prasad Joshi <prasadjoshi124@gmail.com> 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.

Ya, I see thanks.

>>
>> 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 ?

It is hardware's recommendation. The flash hardware uses 8192
blocksize for IOs. Using smaller block size will result in more IOs on
flash device.

Thanks and Regards,
Prasad
>>
>>>
>>> Thanks and Regards,
>>> Prasad
>>>
>>> On Thu, Oct 8, 2009 at 6:41 PM, Manish Katiyar <mkatiyar@gmail.com> wrote:
>>>> On Thu, Oct 8, 2009 at 12:38 PM, Prasad Joshi <prasadjoshi124@gmail.com> 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 majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

      reply	other threads:[~2009-10-09  7:10 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <fe291c8c0910080003m470520adsd4a7e37bf676458b@mail.gmail.com>
2009-10-08  7:10 ` Mounting block device fails Prasad Joshi
     [not found] ` <fe291c8c0910080008g22da5bb0n3f106d644da0fbe8@mail.gmail.com>
2009-10-08 13:11   ` Manish Katiyar
2009-10-09  5:46     ` Prasad Joshi
2009-10-09  5:58       ` Manish Katiyar
2009-10-09  6:04         ` Manish Katiyar
2009-10-09  7:10           ` Prasad Joshi [this message]

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=fe291c8c0910090010q3af67e8dhb01e93f271170012@mail.gmail.com \
    --to=prasadjoshi124@gmail.com \
    --cc=kernelnewbies@nl.linux.org \
    --cc=linux-newbie@vger.kernel.org \
    --cc=mkatiyar@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).