LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* LOOP_GET_STATUS(64) truncates pathnames to 64 chars (was Re: Bug in mkfs.btrfs?!)
[not found] ` <20110124130104.GA7354@scooter>
@ 2011-01-25 0:15 ` Chris Samuel
2011-02-10 12:29 ` Petr Uzel
0 siblings, 1 reply; 6+ messages in thread
From: Chris Samuel @ 2011-01-25 0:15 UTC (permalink / raw)
To: Felix Blanke; +Cc: kreijack, Hugo Mills, linux-btrfs, Linux Kernel
/*
* CC'd to linux-kernel in case they have any feedback on this.
*
* Long thread, trying to work out why mkfs.btrfs failed to
* make a filesystem on an encrypted loopback mount called
* /dev/loop2. Cause turned out to be mkfs.btrfs calling
* LOOP_GET_STATUS to find out if the block device was mounted
* and getting a truncated device name back and so it later
* fails when lstat() is called on the truncated device path.
*
* The long device name for the encrypted loopback mount was
* because /dev/disk/by-id/$ID was used when Felix created it
* to cope with devices moving around.
*/
On 25/01/11 00:01, Felix Blanke wrote:
> you were talking about the LOOP_GET_STATUS function. I'm not
> quite sure where does it came from. Is it part of the kernel?
> Or does it come from the util-linux package?
It's in the kernel, and there is both LOOP_GET_STATUS (old
implementation) and LOOP_GET_STATUS64 (new implementation).
They return structures called loop_info and loop_info64
respectively and both are defined in include/linux/loop.h .
Sadly in both cases the lengths of paths are defined to be
LO_NAME_SIZE which is currently 64 and hence either
implementation will cause the problematic:
lstat("/dev/disk/by-id/ata-INTEL_SSDSA2M160G2GC_CVPO939201JX160AGN-par",
0x7fffa30b3cf0) = -1 ENOENT (No such file or directory)
I've CC'd this to the LKML in case they have any feedback on
this apparent problem with the API.
cheers,
Chris
--
Chris Samuel : http://www.csamuel.org/ : Melbourne, VIC
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: LOOP_GET_STATUS(64) truncates pathnames to 64 chars (was Re: Bug in mkfs.btrfs?!)
2011-01-25 0:15 ` LOOP_GET_STATUS(64) truncates pathnames to 64 chars (was Re: Bug in mkfs.btrfs?!) Chris Samuel
@ 2011-02-10 12:29 ` Petr Uzel
2011-02-11 13:04 ` Felix Blanke
0 siblings, 1 reply; 6+ messages in thread
From: Petr Uzel @ 2011-02-10 12:29 UTC (permalink / raw)
To: Chris Samuel
Cc: Felix Blanke, kreijack, Hugo Mills, linux-btrfs, Linux Kernel
[-- Attachment #1: Type: text/plain, Size: 1854 bytes --]
On Tue, Jan 25, 2011 at 11:15:11AM +1100, Chris Samuel wrote:
> /*
> * CC'd to linux-kernel in case they have any feedback on this.
> *
> * Long thread, trying to work out why mkfs.btrfs failed to
> * make a filesystem on an encrypted loopback mount called
> * /dev/loop2. Cause turned out to be mkfs.btrfs calling
> * LOOP_GET_STATUS to find out if the block device was mounted
> * and getting a truncated device name back and so it later
> * fails when lstat() is called on the truncated device path.
> *
> * The long device name for the encrypted loopback mount was
> * because /dev/disk/by-id/$ID was used when Felix created it
> * to cope with devices moving around.
> */
>
> On 25/01/11 00:01, Felix Blanke wrote:
>
> > you were talking about the LOOP_GET_STATUS function. I'm not
> > quite sure where does it came from. Is it part of the kernel?
> > Or does it come from the util-linux package?
>
> It's in the kernel, and there is both LOOP_GET_STATUS (old
> implementation) and LOOP_GET_STATUS64 (new implementation).
>
> They return structures called loop_info and loop_info64
> respectively and both are defined in include/linux/loop.h .
>
> Sadly in both cases the lengths of paths are defined to be
> LO_NAME_SIZE which is currently 64 and hence either
> implementation will cause the problematic:
>
> lstat("/dev/disk/by-id/ata-INTEL_SSDSA2M160G2GC_CVPO939201JX160AGN-par",
> 0x7fffa30b3cf0) = -1 ENOENT (No such file or directory)
>
> I've CC'd this to the LKML in case they have any feedback on
> this apparent problem with the API.
Since 2.6.37, you can get full path to the backing file from sys:
cat /sys/block/loopX/loop/backing_file
See
http://linux.derkeiler.com/Mailing-Lists/Kernel/2010-07/msg10996.html
HTH,
Petr
--
Petr Uzel
IRC: ptr_uzl @ freenode
[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: LOOP_GET_STATUS(64) truncates pathnames to 64 chars (was Re: Bug in mkfs.btrfs?!)
2011-02-10 12:29 ` Petr Uzel
@ 2011-02-11 13:04 ` Felix Blanke
2011-02-11 18:59 ` Milan Broz
0 siblings, 1 reply; 6+ messages in thread
From: Felix Blanke @ 2011-02-11 13:04 UTC (permalink / raw)
To: Chris Samuel, Felix Blanke, kreijack, Hugo Mills, linux-btrfs,
Linux Kernel
Hi,
are you sure that patch is in the kernel?
I'm using 2.6.37 and don't have those attribues in my /sys.
Felix
On 10. February 2011 - 13:29, Petr Uzel wrote:
> Date: Thu, 10 Feb 2011 13:29:27 +0100
> From: Petr Uzel <petr.uzel@suse.cz>
> To: Chris Samuel <chris@csamuel.org>
> Cc: Felix Blanke <felixblanke@gmail.com>, kreijack@inwind.it, Hugo Mills
> <hugo-lkml@carfax.org.uk>, linux-btrfs@vger.kernel.org, Linux Kernel
> <linux-kernel@vger.kernel.org>
> Subject: Re: LOOP_GET_STATUS(64) truncates pathnames to 64 chars (was Re:
> Bug in mkfs.btrfs?!)
> Mail-Followup-To: Chris Samuel <chris@csamuel.org>, Felix Blanke
> <felixblanke@gmail.com>, kreijack@inwind.it, Hugo Mills
> <hugo-lkml@carfax.org.uk>, linux-btrfs@vger.kernel.org, Linux Kernel
> <linux-kernel@vger.kernel.org>
>
> On Tue, Jan 25, 2011 at 11:15:11AM +1100, Chris Samuel wrote:
> > /*
> > * CC'd to linux-kernel in case they have any feedback on this.
> > *
> > * Long thread, trying to work out why mkfs.btrfs failed to
> > * make a filesystem on an encrypted loopback mount called
> > * /dev/loop2. Cause turned out to be mkfs.btrfs calling
> > * LOOP_GET_STATUS to find out if the block device was mounted
> > * and getting a truncated device name back and so it later
> > * fails when lstat() is called on the truncated device path.
> > *
> > * The long device name for the encrypted loopback mount was
> > * because /dev/disk/by-id/$ID was used when Felix created it
> > * to cope with devices moving around.
> > */
> >
> > On 25/01/11 00:01, Felix Blanke wrote:
> >
> > > you were talking about the LOOP_GET_STATUS function. I'm not
> > > quite sure where does it came from. Is it part of the kernel?
> > > Or does it come from the util-linux package?
> >
> > It's in the kernel, and there is both LOOP_GET_STATUS (old
> > implementation) and LOOP_GET_STATUS64 (new implementation).
> >
> > They return structures called loop_info and loop_info64
> > respectively and both are defined in include/linux/loop.h .
> >
> > Sadly in both cases the lengths of paths are defined to be
> > LO_NAME_SIZE which is currently 64 and hence either
> > implementation will cause the problematic:
> >
> > lstat("/dev/disk/by-id/ata-INTEL_SSDSA2M160G2GC_CVPO939201JX160AGN-par",
> > 0x7fffa30b3cf0) = -1 ENOENT (No such file or directory)
> >
> > I've CC'd this to the LKML in case they have any feedback on
> > this apparent problem with the API.
>
> Since 2.6.37, you can get full path to the backing file from sys:
> cat /sys/block/loopX/loop/backing_file
>
> See
> http://linux.derkeiler.com/Mailing-Lists/Kernel/2010-07/msg10996.html
>
>
> HTH,
>
> Petr
>
> --
> Petr Uzel
> IRC: ptr_uzl @ freenode
---end quoted text---
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: LOOP_GET_STATUS(64) truncates pathnames to 64 chars (was Re: Bug in mkfs.btrfs?!)
2011-02-11 13:04 ` Felix Blanke
@ 2011-02-11 18:59 ` Milan Broz
[not found] ` <AANLkTi=Arg-09F0DXsWNhsYgyPar=rKs7G_OQG2uMm4f@mail.gmail.com>
0 siblings, 1 reply; 6+ messages in thread
From: Milan Broz @ 2011-02-11 18:59 UTC (permalink / raw)
To: Felix Blanke
Cc: Chris Samuel, kreijack, Hugo Mills, linux-btrfs, Linux Kernel
On 02/11/2011 02:04 PM, Felix Blanke wrote:
> I'm using 2.6.37 and don't have those attribues in my /sys.
These attributes are there only when the loop device is configured,
IOW when backing file is attached.
Milan
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: LOOP_GET_STATUS(64) truncates pathnames to 64 chars (was Re: Bug in mkfs.btrfs?!)
[not found] ` <AANLkTi=Arg-09F0DXsWNhsYgyPar=rKs7G_OQG2uMm4f@mail.gmail.com>
@ 2011-02-11 19:31 ` Milan Broz
2011-02-11 19:41 ` Felix Blanke
0 siblings, 1 reply; 6+ messages in thread
From: Milan Broz @ 2011-02-11 19:31 UTC (permalink / raw)
To: Felix Blanke
Cc: Chris Samuel, kreijack, Hugo Mills, linux-btrfs, Linux Kernel
On 02/11/2011 08:23 PM, Felix Blanke wrote:
> What do you mean with "configured"?
>
> I'm using loop devices with loop aes, and I've looked into /sys for a device which is actually in use.
Ehm. It is really Loop-AES?
Then ask author to backport it there, Loop-AES is not mainline code.
He usually replaces the whole upstream loop implementation with old patched version.
Milan
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: LOOP_GET_STATUS(64) truncates pathnames to 64 chars (was Re: Bug in mkfs.btrfs?!)
2011-02-11 19:31 ` Milan Broz
@ 2011-02-11 19:41 ` Felix Blanke
0 siblings, 0 replies; 6+ messages in thread
From: Felix Blanke @ 2011-02-11 19:41 UTC (permalink / raw)
To: Milan Broz; +Cc: Chris Samuel, kreijack, linux-btrfs, Linux Kernel, Hugo Mills
Yeah, for me its loop-aes.
Ah ok, didn't knew that it replaces that whole loop thing :)
Felix
On Feb 11, 2011 8:32 PM, "Milan Broz" <mbroz@redhat.com> wrote:
> On 02/11/2011 08:23 PM, Felix Blanke wrote:
>> What do you mean with "configured"?
>>
>> I'm using loop devices with loop aes, and I've looked into /sys for a device which is actually in use.
>
> Ehm. It is really Loop-AES?
>
> Then ask author to backport it there, Loop-AES is not mainline code.
> He usually replaces the whole upstream loop implementation with old patched version.
>
> Milan
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-02-11 19:41 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20110122144513.GA2539@scooter>
[not found] ` <20110122145222.GB2539@scooter>
[not found] ` <20110122151124.GC29985@carfax.org.uk>
[not found] ` <20110122155612.GA3664@scooter>
[not found] ` <20110123181827.GF29985@carfax.org.uk>
[not found] ` <4D3CA568.7050506@libero.it>
[not found] ` <20110124130104.GA7354@scooter>
2011-01-25 0:15 ` LOOP_GET_STATUS(64) truncates pathnames to 64 chars (was Re: Bug in mkfs.btrfs?!) Chris Samuel
2011-02-10 12:29 ` Petr Uzel
2011-02-11 13:04 ` Felix Blanke
2011-02-11 18:59 ` Milan Broz
[not found] ` <AANLkTi=Arg-09F0DXsWNhsYgyPar=rKs7G_OQG2uMm4f@mail.gmail.com>
2011-02-11 19:31 ` Milan Broz
2011-02-11 19:41 ` Felix Blanke
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).