From: Eric Sandeen <sandeen@sandeen.net>
To: Rich Johnston <rjohnston@sgi.com>
Cc: xfs-oss <xfs@oss.sgi.com>
Subject: Re: [PATCH] xfsrestore: fix multi stream support
Date: Tue, 01 Oct 2013 23:26:08 -0500 [thread overview]
Message-ID: <524BA060.8090309@sandeen.net> (raw)
In-Reply-To: <524B4677.40200@sgi.com>
On 10/1/13 5:02 PM, Rich Johnston wrote:
>> If partialmax != 0
>> (multi-stream) and no extents exist (entire file is a hole), is there
>> anything to restore? Nope so why call parial_reg(). If you do call it
>> you will not find anything to restore:
>>
Sorry for the scattered replies.
But simply getting here w/ no extents doesn't make us reach the comment
/* Should never get here */ below.
first:
/* Search for a matching inode. Gaps can exist so we must search
* all entries.
*/
for (i=0; i < partialmax; i++ ) {
if (persp->a.parrest[i].is_ino == ino) {
isptr = &persp->a.parrest[i];
break;
}
}
so first it tries to find to see if this inode has another stream (?)
which has partially restored it.
If not:
>> 8977 /* If not found, find a free one, fill it in and return */
>> 8978 if ( ! isptr ) {
>> 8979 mlog(MLOG_NITTY | MLOG_NOLOCK,
>> 8980 "partial_reg: no entry found for %llu\n",
>> ino);
>> 8981 /* find a free one */
>> 8982 for (i=0; i < partialmax; i++ ) {
>> 8983 if (persp->a.parrest[i].is_ino == 0) {
find a stream which doesn't have is_ino set
>> 8984 int j;
>> 8985
>> 8986 isptr = &persp->a.parrest[i];
>> 8987 isptr->is_ino = ino;
set ino
>> 8988 persp->a.parrestcnt++;
>> 8989
>> 8990 /* Clear all endoffsets (this value is
>> 8991 * used to decide if an entry is used or
>> 8992 * not
>> 8993 */
>> 8994 for (j=0, bsptr=isptr->is_bs;
>> 8995 j < drivecnt; j++, bsptr++) {
>> 8996 bsptr->endoffset = 0;
>> 8997 }
>> 8998
etc, and go to found, and everything's fine:
>> 8999 goto found;
>> 9000 }
>> 9001 }
>> 9002
>> 9003 /* Should never get here. */
>>
>> And we reach the dreaded comment above :)
the only way to reach that comment & the associated warning is if the first
loop I pasted finds no matching is_ino on any stream, but the 2nd loop finds
no is_ino == 0. i.e. persp->a.parrest[i].is_ino for every stream ("i") has
a different, non-zero is_ino. How can that happen? (I'm not sure...)
-Eric
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-10-02 4:26 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-01 16:30 [PATCH] xfsrestore: fix multi stream support Rich Johnston
2013-10-01 20:47 ` Eric Sandeen
2013-10-01 21:39 ` Rich Johnston
2013-10-01 22:02 ` Rich Johnston
2013-10-02 3:57 ` Eric Sandeen
2013-10-02 4:17 ` Eric Sandeen
2013-10-02 4:26 ` Eric Sandeen [this message]
2013-10-02 18:41 ` Eric Sandeen
2013-10-02 20:03 ` Rich Johnston
2013-10-02 20:13 ` Eric Sandeen
2013-10-03 13:40 ` Rich Johnston
[not found] ` <20131003212114.493910914@sgi.com>
2013-10-03 22:11 ` [PATCH] xfsdump: handle large, wholly-sparse files Eric Sandeen
2013-10-03 23:11 ` [PATCH V2] " Rich Johnston
2013-10-03 23:16 ` Eric Sandeen
2013-10-07 19:38 ` [PATCH] xfstests XFS: verify extended attributes after multi-stream xfsdump/xfsrestore rjohnston
2013-10-07 20:32 ` Eric Sandeen
2013-10-07 20:54 ` Rich Johnston
2013-10-07 21:00 ` Eric Sandeen
2013-10-08 0:53 ` Dave Chinner
2013-10-08 0:57 ` Eric Sandeen
2013-10-08 0:58 ` Eric Sandeen
2013-10-08 14:21 ` Rich Johnston
2013-10-08 19:27 ` Dave Chinner
2013-10-08 19:57 ` Eric Sandeen
2013-10-08 1:08 ` Dave Chinner
2013-10-08 14:22 ` Rich Johnston
2013-10-08 14:43 ` [PATCH V2] xfstests XFS: verify extended attributes after multi-stream xfsdump/xfsrestore are not lost rjohnston
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=524BA060.8090309@sandeen.net \
--to=sandeen@sandeen.net \
--cc=rjohnston@sgi.com \
--cc=xfs@oss.sgi.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.