diff options
author | hrs <hrs@FreeBSD.org> | 2014-10-09 23:43:13 +0000 |
---|---|---|
committer | hrs <hrs@FreeBSD.org> | 2014-10-09 23:43:13 +0000 |
commit | ff5a508f691a24ad099c53293d4c25fb81498f19 (patch) | |
tree | 6867fd970399c3f637c6815c381e7fd9bbe45889 /sbin/dump | |
parent | a95d28f3718e978370e17d89be70d47af45f12e6 (diff) | |
download | FreeBSD-src-ff5a508f691a24ad099c53293d4c25fb81498f19.zip FreeBSD-src-ff5a508f691a24ad099c53293d4c25fb81498f19.tar.gz |
MFC r271411:
Fix a bug which could break extended attributes in a dump output.
This occurred when a file was >892kB long and had a large data (>1kB)
in the extended attributes.
Diffstat (limited to 'sbin/dump')
-rw-r--r-- | sbin/dump/traverse.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sbin/dump/traverse.c b/sbin/dump/traverse.c index 8258f07..8a9a378 100644 --- a/sbin/dump/traverse.c +++ b/sbin/dump/traverse.c @@ -673,7 +673,12 @@ ufs2_blksout(union dinode *dp, ufs2_daddr_t *blkp, int frags, ino_t ino, */ blks = howmany(frags * sblock->fs_fsize, TP_BSIZE); if (last) { - resid = howmany(fragoff(sblock, dp->dp2.di_size), TP_BSIZE); + if (writingextdata) + resid = howmany(fragoff(sblock, spcl.c_extsize), + TP_BSIZE); + else + resid = howmany(fragoff(sblock, dp->dp2.di_size), + TP_BSIZE); if (resid > 0) blks -= howmany(sblock->fs_fsize, TP_BSIZE) - resid; } |