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 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).