linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hugo Mills <hugo@carfax.org.uk>
To: Stephane Chazelas <stephane_chazelas@yahoo.fr>
Cc: Andreas Philipp <philipp.andreas@gmail.com>,
	linux-btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: strange btrfs sub list output
Date: Fri, 27 May 2011 10:45:23 +0100	[thread overview]
Message-ID: <20110527094523.GA12089@carfax.org.uk> (raw)
In-Reply-To: <chaz20110527093029.GA30613@seebyte.com>

[-- Attachment #1: Type: text/plain, Size: 2246 bytes --]

On Fri, May 27, 2011 at 10:30:29AM +0100, Stephane Chazelas wrote:
> 2011-05-27 10:12:24 +0100, Hugo Mills:
> [skipped useful clarification]
> > 
> >    That's all rather dense, and probably too much information. Hope
> > it's helpful, though.
> [...]
> 
> It is, thanks.
> 
> How would one end up in a situation where the output of "btrfs
> sub list ." has:
> 
> ID 287 top level 285 path data
> 
> How could a "subvolume 285" become a "top level"?

> How does one get a subvolume with a top-level other than "5"?

   This just means that subvolume 287 was created (somewhere) inside
subvolume 285.

   Due to the way that the FS trees and subvolumes work, there's no
global namespace structure in btrfs; that is, there's no single data
structure that represents the entirety of the file/directory hierarchy
in the filesystem. Instead, it's broken up into these sub-namespaces
called subvolumes, and we only record parent/child relationships for
each subvolume separately. The "full path" you get from "btrfs subv
list" is reconstructed from that information in userspace(*).

   Hugo.

(*) Here's how it does it:

The userspace tool gets a list of every subvolume by looking at the FS
tree. It uses the corresponding back-refs to get the inode that
represents each of those FS trees inside its parent:

Subvol  inode   in subvol
256      991        5
257      896      256
258     1073      257

From the inode numbers, it can then recursively walk back up the
directory path to the top of each subvolume:

Subvol  inode   in subvol    relative path
256      991        5        henry
257      896      256        edward/mary
258     1073      257        elizabeth

From that, it can then reconstruct the full pathnames, by walking back
up the subvolume tree:

subvol 258 is elizabeth in 257
           is edward/mary/elizabeth in 256
           is henry/edward/mary/elizabeth in 5

-- 
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
  PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
  --- A linked list is still a binary tree.  Just a very unbalanced ---  
                             one.  -- dragon                             

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 190 bytes --]

  reply	other threads:[~2011-05-27  9:45 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-26 21:22 strange btrfs sub list output Stephane Chazelas
2011-05-27  8:01 ` Stephane Chazelas
2011-05-27  8:21   ` Andreas Philipp
2011-05-27  8:47     ` Stephane Chazelas
2011-05-27  9:01       ` Stephane Chazelas
2011-05-27  9:12       ` Hugo Mills
2011-05-27  9:24         ` Andreas Philipp
2011-05-27  9:30         ` Stephane Chazelas
2011-05-27  9:45           ` Hugo Mills [this message]
2011-05-27 10:06             ` Andreas Philipp
2011-05-27 10:29               ` Hugo Mills
2011-05-27 11:30             ` Stephane Chazelas
2011-05-27 11:38               ` Hugo Mills
2011-05-27 11:49               ` Andreas Philipp
2011-05-31 10:00                 ` Stephane Chazelas
2011-05-31 17:40                   ` C Anthony Risinger
2011-05-31 18:50                     ` Andreas Philipp
2011-05-31 19:32                       ` C Anthony Risinger
2011-06-02  6:23                         ` C Anthony Risinger

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=20110527094523.GA12089@carfax.org.uk \
    --to=hugo@carfax.org.uk \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=philipp.andreas@gmail.com \
    --cc=stephane_chazelas@yahoo.fr \
    /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).