All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arne Jansen <sensille@gmx.net>
To: Jan Schmidt <list.btrfs@jan-o-sch.net>
Cc: Li Zefan <lizf@cn.fujitsu.com>,
	linux-btrfs@vger.kernel.org, chris.mason@oracle.com
Subject: Re: [PATCH v8 1/8] btrfs: added helper functions to iterate backrefs
Date: Mon, 07 Nov 2011 17:46:49 +0100	[thread overview]
Message-ID: <4EB80B79.3020400@gmx.net> (raw)
In-Reply-To: <4EB26DC3.5080409@jan-o-sch.net>

On 03.11.2011 11:32, Jan Schmidt wrote:
> On 03.11.2011 02:41, Li Zefan wrote:
>> (as this is going to be merged into mainline..)
>>
>>> +/*
>>> + * calls iterate() for every inode that references the extent identified by
>>> + * the given parameters. will use the path given as a parameter and return it
>>> + * released.
>>> + * when the iterator function returns a non-zero value, iteration stops.
>>> + */
>>> +int iterate_extent_inodes(struct btrfs_fs_info *fs_info,
>>> +				struct btrfs_path *path,
>>> +				u64 extent_item_objectid,
>>> +				u64 extent_offset,
>>> +				iterate_extent_inodes_t *iterate, void *ctx)
>>
>> While trying to use this API, I found there's a big defect in this function.
>>
>>    fs_tree 1       fs_tree 2
>>        \              /
>>         \            /
>>          \          /
>>           \        /
>>              node
>>               |
>>               |
>>              leaf  (EXTENT_DATA item)
>>
>> In the above case, the function will find only 1 reference.
> 
> Hum. You are right.
> 
> I'm convinced that I've been at this point months ago, only I cannot
> find code dealing with counts > 1 on nodes. I'll look for a fix in my
> branches or make a new one.
> 
> Currently, this is more of a best-effort resolver. Support for delayed
> extents is missing, it should be used on commit roots to get a
> consistent state.
> 

The qgroups patch contains an implementation to find all roots for a
given extent. A quite extensive part of qgroups is needed for that, so
it might be easiest to build a new version on top of qgroups.
Otherwise I could split qgroups in 2 parts to factor out that half.

-Arne

  reply	other threads:[~2011-11-07 16:46 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-27 14:56 [PATCH v8 0/8] Btrfs scrub: print path to corrupted files and trigger nodatasum fixup Jan Schmidt
2011-07-27 14:56 ` [PATCH v8 1/8] btrfs: added helper functions to iterate backrefs Jan Schmidt
2011-11-03  1:41   ` Li Zefan
2011-11-03 10:32     ` Jan Schmidt
2011-11-07 16:46       ` Arne Jansen [this message]
2011-07-27 14:56 ` [PATCH v8 2/8] btrfs scrub: added unverified_errors Jan Schmidt
2011-07-27 14:56 ` [PATCH v8 3/8] btrfs scrub: print paths of corrupted files Jan Schmidt
2011-07-27 14:56 ` [PATCH v8 4/8] btrfs scrub: bugfix: mirror_num off by one Jan Schmidt
2011-07-27 14:56 ` [PATCH v8 5/8] btrfs: add mirror_num to extent_read_full_page Jan Schmidt
2011-07-27 14:56 ` [PATCH v8 6/8] btrfs scrub: use int for mirror_num, not u64 Jan Schmidt
2011-07-27 14:56 ` [PATCH v8 7/8] btrfs scrub: add fixup code for errors on nodatasum files Jan Schmidt
2011-07-27 14:56 ` [PATCH v8 8/8] btrfs: new ioctls to do logical->inode and inode->path resolving Jan Schmidt
2011-07-27 16:39 ` [PATCH v8 0/8] Btrfs scrub: print path to corrupted files and trigger nodatasum fixup Jan Schubert
2011-07-27 22:34   ` Jan Schubert
2011-07-28 14:44     ` Jan Schubert
2011-07-28 17:00       ` Jan Schmidt
2011-07-29 15:53         ` Jan Schubert

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=4EB80B79.3020400@gmx.net \
    --to=sensille@gmx.net \
    --cc=chris.mason@oracle.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=list.btrfs@jan-o-sch.net \
    --cc=lizf@cn.fujitsu.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.