From: Daniel Rosenberg via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: linux-f2fs-devel@lists.sourceforge.net
Cc: Jaegeuk Kim <jaegeuk@kernel.org>,
kernel-team@android.com, Daeho Jeong <daehojeong@google.com>,
Daniel Rosenberg <drosen@google.com>
Subject: [f2fs-dev] [PATCH v4 2/2] dump.f2fs: Fix xattr dumping
Date: Thu, 23 May 2024 15:47:00 -0700 [thread overview]
Message-ID: <20240523224700.265251-2-drosen@google.com> (raw)
In-Reply-To: <20240523224700.265251-1-drosen@google.com>
Xattrs for files with inline data were being skipped. This dumps those,
as well as xattrs for folders.
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Reviewed-by: Daeho Jeong <daehojeong@google.com>
---
fsck/dump.c | 39 +++++++++++++++++++++++++++------------
1 file changed, 27 insertions(+), 12 deletions(-)
diff --git a/fsck/dump.c b/fsck/dump.c
index fa68456..90e3e0e 100644
--- a/fsck/dump.c
+++ b/fsck/dump.c
@@ -377,7 +377,7 @@ static void dump_node_blk(struct f2fs_sb_info *sbi, int ntype,
}
#ifdef HAVE_FSETXATTR
-static void dump_xattr(struct f2fs_sb_info *sbi, struct f2fs_node *node_blk)
+static void dump_xattr(struct f2fs_sb_info *sbi, struct f2fs_node *node_blk, int is_dir)
{
void *xattr;
void *last_base_addr;
@@ -431,12 +431,24 @@ static void dump_xattr(struct f2fs_sb_info *sbi, struct f2fs_node *node_blk)
DBG(1, "fd %d xattr_name %s\n", c.dump_fd, xattr_name);
#if defined(__linux__)
- ret = fsetxattr(c.dump_fd, xattr_name, value,
- le16_to_cpu(ent->e_value_size), 0);
+ if (is_dir) {
+ ret = setxattr(".", xattr_name, value,
+ le16_to_cpu(ent->e_value_size), 0);
+ } else {
+ ret = fsetxattr(c.dump_fd, xattr_name, value,
+ le16_to_cpu(ent->e_value_size), 0);
+ }
+
#elif defined(__APPLE__)
- ret = fsetxattr(c.dump_fd, xattr_name, value,
- le16_to_cpu(ent->e_value_size), 0,
- XATTR_CREATE);
+ if (is_dir) {
+ ret = setxattr(".", xattr_name, value,
+ le16_to_cpu(ent->e_value_size), 0,
+ XATTR_CREATE);
+ } else {
+ ret = fsetxattr(c.dump_fd, xattr_name, value,
+ le16_to_cpu(ent->e_value_size), 0,
+ XATTR_CREATE);
+ }
#endif
if (ret)
MSG(0, "XATTR index 0x%x set xattr failed error %d\n",
@@ -449,7 +461,7 @@ static void dump_xattr(struct f2fs_sb_info *sbi, struct f2fs_node *node_blk)
}
#else
static void dump_xattr(struct f2fs_sb_info *UNUSED(sbi),
- struct f2fs_node *UNUSED(node_blk))
+ struct f2fs_node *UNUSED(node_blk), int UNUSED(is_dir))
{
MSG(0, "XATTR does not support\n");
}
@@ -462,13 +474,15 @@ static int dump_inode_blk(struct f2fs_sb_info *sbi, u32 nid,
u64 ofs = 0;
u32 addr_per_block;
bool is_dir = S_ISDIR(le16_to_cpu(node_blk->i.i_mode));
+ int ret = 0;
if ((node_blk->i.i_inline & F2FS_INLINE_DATA)) {
DBG(3, "ino[0x%x] has inline data!\n", nid);
/* recover from inline data */
dev_write_dump(((unsigned char *)node_blk) + INLINE_DATA_OFFSET,
0, MAX_INLINE_DATA(node_blk));
- return -1;
+ ret = -1;
+ goto dump_xattr;
}
if ((node_blk->i.i_inline & F2FS_INLINE_DENTRY)) {
@@ -480,7 +494,8 @@ static int dump_inode_blk(struct f2fs_sb_info *sbi, u32 nid,
DBG(3, "ino[0x%x] has inline dentries!\n", nid);
/* recover from inline dentry */
dump_folder_contents(sbi, d.bitmap, d.dentry, d.filename, d.max);
- return -1;
+ ret = -1;
+ goto dump_xattr;
}
c.show_file_map_max_offset = f2fs_max_file_offset(&node_blk->i);
@@ -516,9 +531,9 @@ static int dump_inode_blk(struct f2fs_sb_info *sbi, u32 nid,
}
/* last block in extent cache */
print_extent(true);
-
- dump_xattr(sbi, node_blk);
- return 0;
+dump_xattr:
+ dump_xattr(sbi, node_blk, is_dir);
+ return ret;
}
static void dump_file(struct f2fs_sb_info *sbi, struct node_info *ni,
--
2.45.1.288.g0e0cd299f1-goog
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply other threads:[~2024-05-23 22:47 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-23 22:46 [f2fs-dev] [PATCH v4 1/2] dump.f2fs: Add ability to dump folders Daniel Rosenberg via Linux-f2fs-devel
2024-05-23 22:47 ` Daniel Rosenberg via Linux-f2fs-devel [this message]
2024-05-23 23:34 ` [f2fs-dev] [PATCH v4 2/2] dump.f2fs: Fix xattr dumping Daeho Jeong
2024-05-29 6:41 ` Chao Yu
2024-05-23 23:33 ` [f2fs-dev] [PATCH v4 1/2] dump.f2fs: Add ability to dump folders Daeho Jeong
2024-05-29 6:39 ` Chao Yu
2024-05-30 23:41 ` Jaegeuk Kim
2024-05-31 1:13 ` Chao Yu
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=20240523224700.265251-2-drosen@google.com \
--to=linux-f2fs-devel@lists.sourceforge.net \
--cc=daehojeong@google.com \
--cc=drosen@google.com \
--cc=jaegeuk@kernel.org \
--cc=kernel-team@android.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.