From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: tytso@mit.edu, darrick.wong@oracle.com
Cc: linux-ext4@vger.kernel.org
Subject: [PATCH 05/37] debugfs: teach logdump to deal with 64bit revoke tables
Date: Thu, 01 May 2014 16:12:55 -0700 [thread overview]
Message-ID: <20140501231255.31890.67291.stgit@birch.djwong.org> (raw)
In-Reply-To: <20140501231222.31890.82860.stgit@birch.djwong.org>
The logdump command doesn't know how to deal with revoke tables in
64bit journals, so teach it to do this.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
debugfs/logdump.c | 20 ++++-
tests/f_jnl_64bit/expect.0 | 171 --------------------------------------------
2 files changed, 15 insertions(+), 176 deletions(-)
diff --git a/debugfs/logdump.c b/debugfs/logdump.c
index 2d0efaf..8b9dc5b 100644
--- a/debugfs/logdump.c
+++ b/debugfs/logdump.c
@@ -526,28 +526,38 @@ static void dump_revoke_block(FILE *out_file, char *buf,
{
int offset, max;
journal_revoke_header_t *header;
- unsigned int *entry, rblock;
+ unsigned int *entry;
+ unsigned long long *bentry, rblock;
+ int tag_size = sizeof(*entry);
if (dump_all)
fprintf(out_file, "Dumping revoke block, sequence %u, at "
"block %u:\n", transaction, blocknr);
+ if (be32_to_cpu(jsb->s_feature_incompat) & JFS_FEATURE_INCOMPAT_64BIT)
+ tag_size = sizeof(*bentry);
+
header = (journal_revoke_header_t *) buf;
offset = sizeof(journal_revoke_header_t);
max = be32_to_cpu(header->r_count);
while (offset < max) {
- entry = (unsigned int *) (buf + offset);
- rblock = be32_to_cpu(*entry);
+ if (tag_size == sizeof(*entry)) {
+ entry = (unsigned int *) (buf + offset);
+ rblock = be32_to_cpu(*entry);
+ } else {
+ bentry = (unsigned long long *)(buf + offset);
+ rblock = ext2fs_be64_to_cpu(*bentry);
+ }
if (dump_all || rblock == block_to_dump) {
- fprintf(out_file, " Revoke FS block %u", rblock);
+ fprintf(out_file, " Revoke FS block %llu", rblock);
if (dump_all)
fprintf(out_file, "\n");
else
fprintf(out_file," at block %u, sequence %u\n",
blocknr, transaction);
}
- offset += 4;
+ offset += tag_size;
}
}
diff --git a/tests/f_jnl_64bit/expect.0 b/tests/f_jnl_64bit/expect.0
index 2007f03..5cef2d8 100644
--- a/tests/f_jnl_64bit/expect.0
+++ b/tests/f_jnl_64bit/expect.0
@@ -1,189 +1,97 @@
Journal starts at block 67, transaction 32
Found expected sequence 32, type 5 (revoke table) at block 67
Dumping revoke block, sequence 32, at block 67:
- Revoke FS block 0
Revoke FS block 1536
- Revoke FS block 0
Revoke FS block 1472
- Revoke FS block 0
Revoke FS block 1473
- Revoke FS block 0
Revoke FS block 1474
- Revoke FS block 0
Revoke FS block 1475
- Revoke FS block 0
Revoke FS block 1476
- Revoke FS block 0
Revoke FS block 1541
- Revoke FS block 0
Revoke FS block 1477
- Revoke FS block 0
Revoke FS block 1478
- Revoke FS block 0
Revoke FS block 1479
- Revoke FS block 0
Revoke FS block 1480
- Revoke FS block 0
Revoke FS block 1481
- Revoke FS block 0
Revoke FS block 1482
- Revoke FS block 0
Revoke FS block 1483
- Revoke FS block 0
Revoke FS block 1484
- Revoke FS block 0
Revoke FS block 1485
- Revoke FS block 0
Revoke FS block 1486
- Revoke FS block 0
Revoke FS block 1487
- Revoke FS block 0
Revoke FS block 1488
- Revoke FS block 0
Revoke FS block 1489
- Revoke FS block 0
Revoke FS block 1490
- Revoke FS block 0
Revoke FS block 1491
- Revoke FS block 0
Revoke FS block 1556
- Revoke FS block 0
Revoke FS block 1492
- Revoke FS block 0
Revoke FS block 1493
- Revoke FS block 0
Revoke FS block 1429
- Revoke FS block 0
Revoke FS block 1494
- Revoke FS block 0
Revoke FS block 1495
- Revoke FS block 0
Revoke FS block 1496
- Revoke FS block 0
Revoke FS block 1432
- Revoke FS block 0
Revoke FS block 1497
- Revoke FS block 0
Revoke FS block 1498
- Revoke FS block 0
Revoke FS block 1434
- Revoke FS block 0
Revoke FS block 1499
- Revoke FS block 0
Revoke FS block 1435
- Revoke FS block 0
Revoke FS block 1500
- Revoke FS block 0
Revoke FS block 1501
- Revoke FS block 0
Revoke FS block 1502
- Revoke FS block 0
Revoke FS block 1503
- Revoke FS block 0
Revoke FS block 1504
- Revoke FS block 0
Revoke FS block 1505
- Revoke FS block 0
Revoke FS block 1506
- Revoke FS block 0
Revoke FS block 1442
- Revoke FS block 0
Revoke FS block 1507
- Revoke FS block 0
Revoke FS block 1508
- Revoke FS block 0
Revoke FS block 1444
- Revoke FS block 0
Revoke FS block 1509
- Revoke FS block 0
Revoke FS block 1445
- Revoke FS block 0
Revoke FS block 1510
- Revoke FS block 0
Revoke FS block 1511
- Revoke FS block 0
Revoke FS block 1512
- Revoke FS block 0
Revoke FS block 1513
- Revoke FS block 0
Revoke FS block 1449
- Revoke FS block 0
Revoke FS block 1514
- Revoke FS block 0
Revoke FS block 1515
- Revoke FS block 0
Revoke FS block 1516
- Revoke FS block 0
Revoke FS block 1517
- Revoke FS block 0
Revoke FS block 1453
- Revoke FS block 0
Revoke FS block 1518
- Revoke FS block 0
Revoke FS block 1519
- Revoke FS block 0
Revoke FS block 1520
- Revoke FS block 0
Revoke FS block 1456
- Revoke FS block 0
Revoke FS block 1521
- Revoke FS block 0
Revoke FS block 1457
- Revoke FS block 0
Revoke FS block 1522
- Revoke FS block 0
Revoke FS block 1458
- Revoke FS block 0
Revoke FS block 1523
- Revoke FS block 0
Revoke FS block 1459
- Revoke FS block 0
Revoke FS block 1524
- Revoke FS block 0
Revoke FS block 1460
- Revoke FS block 0
Revoke FS block 1525
- Revoke FS block 0
Revoke FS block 1461
- Revoke FS block 0
Revoke FS block 1526
- Revoke FS block 0
Revoke FS block 1462
- Revoke FS block 0
Revoke FS block 1527
- Revoke FS block 0
Revoke FS block 1463
- Revoke FS block 0
Revoke FS block 1528
- Revoke FS block 0
Revoke FS block 1464
- Revoke FS block 0
Revoke FS block 1529
- Revoke FS block 0
Revoke FS block 1465
- Revoke FS block 0
Revoke FS block 1530
- Revoke FS block 0
Revoke FS block 1466
- Revoke FS block 0
Revoke FS block 1531
- Revoke FS block 0
Revoke FS block 1467
- Revoke FS block 0
Revoke FS block 1532
- Revoke FS block 0
Revoke FS block 1468
- Revoke FS block 0
Revoke FS block 1533
- Revoke FS block 0
Revoke FS block 1469
- Revoke FS block 0
Revoke FS block 1534
- Revoke FS block 0
Revoke FS block 1470
- Revoke FS block 0
Revoke FS block 1535
- Revoke FS block 0
Revoke FS block 1471
Found expected sequence 32, type 1 (descriptor block) at block 68
Dumping descriptor block, sequence 32, at block 68:
@@ -323,163 +231,84 @@ Dumping descriptor block, sequence 32, at block 150:
Found expected sequence 32, type 2 (commit block) at block 201
Found expected sequence 33, type 5 (revoke table) at block 202
Dumping revoke block, sequence 33, at block 202:
- Revoke FS block 0
Revoke FS block 1600
- Revoke FS block 0
Revoke FS block 1601
- Revoke FS block 0
Revoke FS block 1537
- Revoke FS block 0
Revoke FS block 1602
- Revoke FS block 0
Revoke FS block 1538
- Revoke FS block 0
Revoke FS block 1603
- Revoke FS block 0
Revoke FS block 1539
- Revoke FS block 0
Revoke FS block 1604
- Revoke FS block 0
Revoke FS block 1540
- Revoke FS block 0
Revoke FS block 1605
- Revoke FS block 0
Revoke FS block 1606
- Revoke FS block 0
Revoke FS block 1542
- Revoke FS block 0
Revoke FS block 1607
- Revoke FS block 0
Revoke FS block 1543
- Revoke FS block 0
Revoke FS block 1608
- Revoke FS block 0
Revoke FS block 1544
- Revoke FS block 0
Revoke FS block 1609
- Revoke FS block 0
Revoke FS block 1545
- Revoke FS block 0
Revoke FS block 1610
- Revoke FS block 0
Revoke FS block 1546
- Revoke FS block 0
Revoke FS block 1611
- Revoke FS block 0
Revoke FS block 1547
- Revoke FS block 0
Revoke FS block 1612
- Revoke FS block 0
Revoke FS block 1548
- Revoke FS block 0
Revoke FS block 1613
- Revoke FS block 0
Revoke FS block 1549
- Revoke FS block 0
Revoke FS block 1614
- Revoke FS block 0
Revoke FS block 1550
- Revoke FS block 0
Revoke FS block 1615
- Revoke FS block 0
Revoke FS block 1551
- Revoke FS block 0
Revoke FS block 1616
- Revoke FS block 0
Revoke FS block 1552
- Revoke FS block 0
Revoke FS block 1617
- Revoke FS block 0
Revoke FS block 1553
- Revoke FS block 0
Revoke FS block 1554
- Revoke FS block 0
Revoke FS block 1555
- Revoke FS block 0
Revoke FS block 1557
- Revoke FS block 0
Revoke FS block 1558
- Revoke FS block 0
Revoke FS block 1559
- Revoke FS block 0
Revoke FS block 1560
- Revoke FS block 0
Revoke FS block 1561
- Revoke FS block 0
Revoke FS block 1562
- Revoke FS block 0
Revoke FS block 1563
- Revoke FS block 0
Revoke FS block 1564
- Revoke FS block 0
Revoke FS block 1565
- Revoke FS block 0
Revoke FS block 1566
- Revoke FS block 0
Revoke FS block 1567
- Revoke FS block 0
Revoke FS block 1568
- Revoke FS block 0
Revoke FS block 1569
- Revoke FS block 0
Revoke FS block 1570
- Revoke FS block 0
Revoke FS block 1571
- Revoke FS block 0
Revoke FS block 1572
- Revoke FS block 0
Revoke FS block 1573
- Revoke FS block 0
Revoke FS block 1574
- Revoke FS block 0
Revoke FS block 1575
- Revoke FS block 0
Revoke FS block 1576
- Revoke FS block 0
Revoke FS block 1577
- Revoke FS block 0
Revoke FS block 1578
- Revoke FS block 0
Revoke FS block 1579
- Revoke FS block 0
Revoke FS block 1580
- Revoke FS block 0
Revoke FS block 1581
- Revoke FS block 0
Revoke FS block 1582
- Revoke FS block 0
Revoke FS block 1583
- Revoke FS block 0
Revoke FS block 1584
- Revoke FS block 0
Revoke FS block 1585
- Revoke FS block 0
Revoke FS block 1586
- Revoke FS block 0
Revoke FS block 1587
- Revoke FS block 0
Revoke FS block 1588
- Revoke FS block 0
Revoke FS block 1589
- Revoke FS block 0
Revoke FS block 1590
- Revoke FS block 0
Revoke FS block 1591
- Revoke FS block 0
Revoke FS block 1592
- Revoke FS block 0
Revoke FS block 1593
- Revoke FS block 0
Revoke FS block 1594
- Revoke FS block 0
Revoke FS block 1595
- Revoke FS block 0
Revoke FS block 1596
- Revoke FS block 0
Revoke FS block 1597
- Revoke FS block 0
Revoke FS block 1598
- Revoke FS block 0
Revoke FS block 1599
Found expected sequence 33, type 1 (descriptor block) at block 203
Dumping descriptor block, sequence 33, at block 203:
next prev parent reply other threads:[~2014-05-01 23:13 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-01 23:12 [PATCH 00/37] e2fsprogs patchbomb 5/14 Darrick J. Wong
2014-05-01 23:12 ` [PATCH 01/37] misc: create better-packaged static analysis reports Darrick J. Wong
2014-05-11 22:33 ` Theodore Ts'o
2014-05-01 23:12 ` [PATCH 02/37] misc: coverity fixes Darrick J. Wong
2014-05-02 11:17 ` Lukáš Czerner
2014-05-05 20:04 ` Darrick J. Wong
2014-05-11 22:40 ` Theodore Ts'o
2014-05-01 23:12 ` [PATCH 03/37] libext2fs: create sockets when populating filesystem Darrick J. Wong
2014-05-02 11:22 ` Lukáš Czerner
2014-05-05 20:08 ` Darrick J. Wong
2014-05-11 22:44 ` Theodore Ts'o
2014-05-01 23:12 ` [PATCH 04/37] mke2fs: always warn if 128-byte inode and inline_data Darrick J. Wong
2014-05-02 11:27 ` Lukáš Czerner
2014-05-05 20:10 ` Darrick J. Wong
2014-05-12 0:26 ` Theodore Ts'o
2014-05-01 23:12 ` Darrick J. Wong [this message]
2014-05-02 11:38 ` [PATCH 05/37] debugfs: teach logdump to deal with 64bit revoke tables Lukáš Czerner
2014-05-05 22:23 ` Darrick J. Wong
2014-05-06 11:35 ` Lukáš Czerner
2014-05-12 1:20 ` Theodore Ts'o
2014-05-01 23:13 ` [PATCH 06/37] debugfs: force logdump to display (old) journal contents Darrick J. Wong
2014-05-02 11:49 ` Lukáš Czerner
2014-05-06 0:24 ` Darrick J. Wong
2014-05-12 1:41 ` Theodore Ts'o
2014-05-12 3:31 ` Theodore Ts'o
2014-05-14 0:05 ` Darrick J. Wong
2014-05-01 23:13 ` [PATCH 07/37] resize2fs: fix check for collision between old GDT and superblock on sparse_super2 fs Darrick J. Wong
2014-05-12 3:35 ` Theodore Ts'o
2014-05-01 23:13 ` [PATCH 08/37] mke2fs: set gdt csum when creating packed fs Darrick J. Wong
2014-05-02 11:55 ` Lukáš Czerner
2014-05-12 4:22 ` Theodore Ts'o
2014-05-01 23:13 ` [PATCH 09/37] mke2fs: set error behavior at initialization time Darrick J. Wong
2014-05-02 12:13 ` Lukáš Czerner
2014-05-01 23:13 ` [PATCH 10/37] e2fsck: verify checksums after checking everything else Darrick J. Wong
2014-05-02 12:32 ` Lukáš Czerner
2014-05-05 22:56 ` Darrick J. Wong
2014-05-06 11:32 ` Lukáš Czerner
2014-05-08 0:05 ` Darrick J. Wong
2014-05-01 23:13 ` [PATCH 11/37] e2fsck: fix the extended attribute checksum error message Darrick J. Wong
2014-05-02 12:46 ` Lukáš Czerner
2014-05-05 23:08 ` Darrick J. Wong
2014-05-06 10:12 ` Lukáš Czerner
2014-05-01 23:13 ` [PATCH 12/37] e2fsck: insert a missing dirent tail for checksums if possible Darrick J. Wong
2014-05-02 12:54 ` Lukáš Czerner
2014-05-05 23:16 ` Darrick J. Wong
2014-05-01 23:13 ` [PATCH 13/37] e2fsck: write dir blocks after new inode when reconstructing root/lost+found Darrick J. Wong
2014-05-05 17:13 ` Lukáš Czerner
2014-05-01 23:13 ` [PATCH 14/37] dumpe2fs: add switch to disable checksum verification Darrick J. Wong
2014-05-05 17:20 ` Lukáš Czerner
2014-05-01 23:14 ` [PATCH 15/37] mke2fs: set block_validity as a default mount option Darrick J. Wong
2014-05-05 17:24 ` Lukáš Czerner
2014-05-01 23:14 ` [PATCH 16/37] libext2fs: support allocating uninit blocks in bmap2() Darrick J. Wong
2014-05-06 15:45 ` Lukáš Czerner
2014-05-06 19:59 ` Darrick J. Wong
2014-05-07 10:02 ` Lukáš Czerner
2014-05-07 21:37 ` Darrick J. Wong
2014-05-08 0:13 ` [PATCH 1/2] libext2fs: support BLKZEROOUT/FALLOC_FL_ZERO_RANGE in ext2fs_zero_blocks Darrick J. Wong
2014-05-13 11:11 ` Lukáš Czerner
2014-05-08 0:14 ` [PATCH 2/2] libext2fs: support allocating uninit blocks in bmap2() Darrick J. Wong
2014-05-27 16:28 ` Lukáš Czerner
2014-05-28 19:48 ` Darrick J. Wong
2014-05-01 23:14 ` [PATCH 17/37] libext2fs: file IO routines should handle uninit blocks Darrick J. Wong
2014-05-01 23:14 ` [PATCH 18/37] resize2fs: convert fs to and from 64bit mode Darrick J. Wong
2014-05-01 23:14 ` [PATCH 19/37] resize2fs: when toggling 64bit, don't free in-use bg data clusters Darrick J. Wong
2014-05-01 23:14 ` [PATCH 20/37] resize2fs: adjust reserved_gdt_blocks when changing group descriptor size Darrick J. Wong
2014-05-01 23:14 ` [PATCH 21/37] libext2fs: have UNIX IO manager use pread/pwrite Darrick J. Wong
2014-08-02 23:16 ` Theodore Ts'o
2014-05-01 23:14 ` [PATCH 22/37] ext2fs: add readahead method to improve scanning Darrick J. Wong
2014-05-01 23:14 ` [PATCH 23/37] e2fsck: provide routines to read-ahead metadata Darrick J. Wong
2014-05-01 23:14 ` [PATCH 24/37] e2fsck: read-ahead metadata during passes 1, 2, and 4 Darrick J. Wong
2014-07-28 22:25 ` Darrick J. Wong
2014-05-01 23:15 ` [PATCH 25/37] libext2fs: when appending to a file, don't split an index block in equal halves Darrick J. Wong
2014-08-02 23:43 ` Theodore Ts'o
2014-05-01 23:15 ` [PATCH 26/37] libext2fs: find inode goal when allocating blocks Darrick J. Wong
2014-05-01 23:15 ` [PATCH 27/37] libext2fs: find a range of empty blocks Darrick J. Wong
2014-05-01 23:15 ` [PATCH 28/37] libext2fs: provide a function to set inode size Darrick J. Wong
2014-07-26 18:37 ` Theodore Ts'o
2014-05-01 23:15 ` [PATCH 29/37] libext2fs: implement fallocate Darrick J. Wong
2014-05-01 23:15 ` [PATCH 31/37] fuse2fs: translate ACL structures Darrick J. Wong
2014-05-01 23:15 ` [PATCH 32/37] fuse2fs: handle 64-bit dates correctly Darrick J. Wong
2014-05-01 23:16 ` [PATCH 33/37] fuse2fs: implement fallocate Darrick J. Wong
2014-05-01 23:16 ` [PATCH 35/37] tests: enable using fuse2fs with metadata checksum test Darrick J. Wong
2014-05-01 23:16 ` [PATCH 36/37] tests: test date handling Darrick J. Wong
2014-05-01 23:16 ` [PATCH 37/37] ext5: define new subtype to add features and reduce testing complexity Darrick J. Wong
2014-05-02 9:45 ` Lukáš Czerner
2014-05-02 14:04 ` Theodore Ts'o
2014-05-06 1:59 ` Darrick J. Wong
2014-05-06 1:33 ` Darrick J. Wong
2014-05-06 12:50 ` Lukáš Czerner
2014-05-06 15:21 ` Theodore Ts'o
2014-05-06 15:30 ` Lukáš Czerner
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=20140501231255.31890.67291.stgit@birch.djwong.org \
--to=darrick.wong@oracle.com \
--cc=linux-ext4@vger.kernel.org \
--cc=tytso@mit.edu \
/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).