public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Re: Why does stat() return invalid st_dev field for btrfs ??
       [not found]     ` <4A89D2AC.5080006@rtr.ca>
@ 2009-08-17 22:03       ` Mark Lord
  0 siblings, 0 replies; 3+ messages in thread
From: Mark Lord @ 2009-08-17 22:03 UTC (permalink / raw)
  To: Chris Ball; +Cc: linux-btrfs, Chris Mason, Linux Kernel

Mark Lord wrote:
>
> stat(2) seems to return invalid major/minor device info
> for btrfs filesystems.
> 
> Why?  Is this a bug?
> 
> Eg.
> 
>     [~] uname -r
>     2.6.31-rc6
>     [~] mkfs.btrfs /dev/sdb
>     
>     WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
>     WARNING! - see http://btrfs.wiki.kernel.org before using
>     
>     fs created label (null) on /dev/sdb
>             nodesize 4096 leafsize 4096 sectorsize 4096 size 30.06GB
>     Btrfs Btrfs v0.19
>     [~] mount /dev/sdb /x -t btrfs
>     [~] stat --format="%04D" /x
>     0017
>     [~] touch /x/junk
>     [~] stat --format="%04D" /x/junk
>     0017
> 
> This gives major=0x00, minor=0x17 for /dev/sdb,
> which should have major=8, minor=0x10.
> 
> ???

> Chris Ball wrote:
>> Hi,
>>
>>    > Mmm.. btrfs appears to configure itself as a "pseudo" filesystem,
>>    > which is why it returns fake device numbers via stat(), similar
>>    > to procfs or sysfs.
>>
>> Probably because a single btrfs filesystem can be composed of multiple
>> devices; one major/minor would not be sufficient.
> ..
> 
> So I'm seeing in the code.
> 
> But for the 99% common case (personal computers, one drive), it would be
> rather useful it it would comply with filesystem standards there.
> 
> In the unlikely event that a btrfs actually is composed of multiple 
> devices,
> then in that case perhaps return something nonsensical.
> 
> Mmm.. don't we already *have* an LVM layer in Linux?
> 
> Seems like a rather bad idea to have a new Linux-specific
> filesystem re-implement it's own private LVM, and thus
> confuse various disk management tools and the like.
..

[added linux-kernel to CC: list]

Along those lines -- since btrfs reports invalid device information to stat(2),
then I would suggest that it should also return -ENOTSUP for the FIBMAP and FIEMAP
ioctl() calls.  Otherwise, somebody's filesystem is going to get corrupted.

Cheers

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Why does stat() return invalid st_dev field for btrfs ??
       [not found] ` <ac3eb2510908171729k2e53914fu6ffe49483310aeba@mail.gmail.com>
@ 2009-08-18  2:01   ` Mark Lord
  2009-08-18 21:21     ` Jens Axboe
  0 siblings, 1 reply; 3+ messages in thread
From: Mark Lord @ 2009-08-18  2:01 UTC (permalink / raw)
  To: Kay Sievers; +Cc: linux-btrfs, Chris Mason, Linux Kernel

Kay Sievers wrote:
> On Mon, Aug 17, 2009 at 22:47, Mark Lord<lkml@rtr.ca> wrote:
>> Chris / list,
>>
>> stat(2) seems to return invalid major/minor device info
>> for btrfs filesystems.
>>
>> Why?  Is this a bug?
> 
> This is not invalid and not a bug. It's a superblock without a device,
> and expected behavior.
> 
> There is no one-to-one relation from a btrfs mountpoint to a device,
> it's a tree, and therefore therefore there can not be a single
> major/minor.
..

Sure there is for the most common case.
When there is only a single device, stat() should return that device.
When there are several, it should do something different.

But really, it should be using DM/LVM when there are multiple devices.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Why does stat() return invalid st_dev field for btrfs ??
  2009-08-18  2:01   ` Mark Lord
@ 2009-08-18 21:21     ` Jens Axboe
  0 siblings, 0 replies; 3+ messages in thread
From: Jens Axboe @ 2009-08-18 21:21 UTC (permalink / raw)
  To: Mark Lord; +Cc: Kay Sievers, linux-btrfs, Chris Mason, Linux Kernel

On Mon, Aug 17 2009, Mark Lord wrote:
> Kay Sievers wrote:
>> On Mon, Aug 17, 2009 at 22:47, Mark Lord<lkml@rtr.ca> wrote:
>>> Chris / list,
>>>
>>> stat(2) seems to return invalid major/minor device info
>>> for btrfs filesystems.
>>>
>>> Why?  Is this a bug?
>>
>> This is not invalid and not a bug. It's a superblock without a device,
>> and expected behavior.
>>
>> There is no one-to-one relation from a btrfs mountpoint to a device,
>> it's a tree, and therefore therefore there can not be a single
>> major/minor.
> ..
>
> Sure there is for the most common case.
> When there is only a single device, stat() should return that device.
> When there are several, it should do something different.

I actually think it's quite sane, since then you get the same behaviour
on multi vs single disk file systems. The last thing you want is to have
different behaviour when you later add a disk, for instance.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-08-18 21:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <4A89C1DA.6040601@rtr.ca>
     [not found] ` <4A89C86A.1040207@rtr.ca>
     [not found]   ` <m3eirads6m.fsf@pullcord.laptop.org>
     [not found]     ` <4A89D2AC.5080006@rtr.ca>
2009-08-17 22:03       ` Why does stat() return invalid st_dev field for btrfs ?? Mark Lord
     [not found] ` <ac3eb2510908171729k2e53914fu6ffe49483310aeba@mail.gmail.com>
2009-08-18  2:01   ` Mark Lord
2009-08-18 21:21     ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox