From: Gao Xiang <hsiangkao@linux.alibaba.com>
To: linux-erofs@lists.ozlabs.org
Cc: Chengyu Zhu <hudsonzhu@tencent.com>,
Gao Xiang <hsiangkao@linux.alibaba.com>
Subject: [PATCH v3 2/2] erofs-utils: mount: rename erofsmount_nbd_ctx to erofsmount_ctx
Date: Sun, 28 Jun 2026 22:39:10 +0800 [thread overview]
Message-ID: <20260628143910.1062931-2-hsiangkao@linux.alibaba.com> (raw)
In-Reply-To: <20260628143910.1062931-1-hsiangkao@linux.alibaba.com>
From: Chengyu Zhu <hudsonzhu@tencent.com>
The struct is shared by NBD, ublk and fanotify paths, so the
nbd-specific name was misleading.
Signed-off-by: Chengyu Zhu <hudsonzhu@tencent.com>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
mount/main.c | 79 +++++++++++++++++++++++++++-------------------------
1 file changed, 41 insertions(+), 38 deletions(-)
diff --git a/mount/main.c b/mount/main.c
index dbf5cdddd265..48418275b2d0 100644
--- a/mount/main.c
+++ b/mount/main.c
@@ -772,13 +772,13 @@ err_out:
return err;
}
-struct erofsmount_nbd_ctx {
- struct erofs_vfile _vd; /* virtual device */
- struct erofs_vfile sk; /* socket file */
+struct erofsmount_ctx {
+ struct erofs_vfile _vd; /* backing source */
+ struct erofs_vfile sk; /* NBD socket (NBD backend only) */
struct erofs_vfile *vd;
};
-static int erofsmount_open_source(struct erofsmount_nbd_ctx *ctx,
+static int erofsmount_open_source(struct erofsmount_ctx *ctx,
struct erofsmount_source *source)
{
int err;
@@ -817,7 +817,7 @@ static int erofsmount_open_source(struct erofsmount_nbd_ctx *ctx,
static void *erofsmount_nbd_loopfn(void *arg)
{
- struct erofsmount_nbd_ctx *ctx = arg;
+ struct erofsmount_ctx *ctx = arg;
int err;
while (1) {
@@ -863,7 +863,7 @@ out:
static int erofsmount_startnbd(int nbdfd, struct erofsmount_source *source)
{
- struct erofsmount_nbd_ctx ctx = { .vd = &ctx._vd };
+ struct erofsmount_ctx ctx = { .vd = &ctx._vd };
uintptr_t retcode;
pthread_t th;
int err, err2;
@@ -1190,7 +1190,7 @@ static int erofsmount_reattach_oci(struct erofs_vfile *vf,
#endif
#ifdef S3EROFS_ENABLED
-static int erofsmount_reattach_s3(struct erofsmount_nbd_ctx *ctx, char *source)
+static int erofsmount_reattach_s3(struct erofsmount_ctx *ctx, char *source)
{
char *tokens[5] = {0}, *p = source;
char *bucket = NULL, *key = NULL;
@@ -1253,13 +1253,13 @@ err_out:
return err;
}
#else
-static int erofsmount_reattach_s3(struct erofsmount_nbd_ctx *ctx, char *source)
+static int erofsmount_reattach_s3(struct erofsmount_ctx *ctx, char *source)
{
return -EOPNOTSUPP;
}
#endif
-static int erofsmount_reattach_gzran_oci(struct erofsmount_nbd_ctx *ctx,
+static int erofsmount_reattach_gzran_oci(struct erofsmount_ctx *ctx,
char *source)
{
char *tokens[6] = {0}, *p = source, *space, *oci_source;
@@ -1313,7 +1313,7 @@ static int erofsmount_reattach_gzran_oci(struct erofsmount_nbd_ctx *ctx,
return err;
}
-static int erofsmount_open_recovery_source(struct erofsmount_nbd_ctx *ctx,
+static int erofsmount_open_recovery_source(struct erofsmount_ctx *ctx,
FILE *f)
{
char *line = NULL, *source;
@@ -1398,7 +1398,7 @@ static int erofsmount_startnbd_nl(pid_t *pid, struct erofsmount_source *source)
return -errno;
if ((*pid = fork()) == 0) {
- struct erofsmount_nbd_ctx ctx = { .vd = &ctx._vd };
+ struct erofsmount_ctx ctx = { .vd = &ctx._vd };
char *recp;
/* Otherwise, NBD disconnect sends SIGPIPE, skipping cleanup */
@@ -1478,7 +1478,7 @@ static int ublk_dev_id_from_path(const char *path)
static int erofsmount_ublk_reattach(int dev_id)
{
- struct erofsmount_nbd_ctx ctx = { .vd = &ctx._vd };
+ struct erofsmount_ctx ctx = { .vd = &ctx._vd };
char *recp;
FILE *f;
int err;
@@ -1525,9 +1525,9 @@ static int erofsmount_ublk_reattach(int dev_id)
static int erofsmount_reattach(const char *target)
{
- struct erofsmount_nbd_ctx ctx = { .vd = &ctx._vd };
+ struct erofsmount_ctx ctx = { .vd = &ctx._vd };
char *identifier;
- int nbdnum, err;
+ int dev_id, err;
struct stat st;
FILE *f;
@@ -1538,17 +1538,17 @@ static int erofsmount_reattach(const char *target)
if (!S_ISBLK(st.st_mode))
return -ENOTBLK;
- nbdnum = ublk_dev_id_from_path(target);
- if (nbdnum >= 0)
- return erofsmount_ublk_reattach(nbdnum);
+ dev_id = ublk_dev_id_from_path(target);
+ if (dev_id >= 0)
+ return erofsmount_ublk_reattach(dev_id);
if (major(st.st_rdev) != EROFS_NBD_MAJOR)
return -ENOTBLK;
- nbdnum = erofs_nbd_get_index_from_minor(minor(st.st_rdev));
- if (nbdnum < 0)
- return nbdnum;
- identifier = erofs_nbd_get_identifier(nbdnum);
+ dev_id = erofs_nbd_get_index_from_minor(minor(st.st_rdev));
+ if (dev_id < 0)
+ return dev_id;
+ identifier = erofs_nbd_get_identifier(dev_id);
if (IS_ERR(identifier)) {
identifier = NULL;
} else if (identifier && *identifier == '\0') {
@@ -1559,7 +1559,7 @@ static int erofsmount_reattach(const char *target)
if (!identifier) {
char *recp;
- if (asprintf(&recp, EROFSMOUNT_NBD_REC_FMT, nbdnum) <= 0) {
+ if (asprintf(&recp, EROFSMOUNT_NBD_REC_FMT, dev_id) <= 0) {
err = -ENOMEM;
goto err_identifier;
}
@@ -1577,7 +1577,7 @@ static int erofsmount_reattach(const char *target)
if (err)
goto err_identifier;
- err = erofs_nbd_nl_reconnect(nbdnum, identifier);
+ err = erofs_nbd_nl_reconnect(dev_id, identifier);
if (err >= 0) {
ctx.sk.fd = err;
if (fork() == 0) {
@@ -2191,7 +2191,7 @@ static int erofsmount_ublk(struct erofsmount_source *source,
}
if (pid == 0) {
- struct erofsmount_nbd_ctx ctx = { .vd = &ctx._vd };
+ struct erofsmount_ctx ctx = { .vd = &ctx._vd };
struct erofs_ublk_dev_info info;
char *recp = NULL;
struct stat st;
@@ -2275,7 +2275,7 @@ static int erofsmount_ublk(struct erofsmount_source *source,
int erofsmount_umount(char *target)
{
char *device = NULL, *mountpoint = NULL;
- int err, fd, nbdnum;
+ int err, fd, dev_id;
struct stat st;
FILE *mounts;
size_t n;
@@ -2347,19 +2347,22 @@ int erofsmount_umount(char *target)
if (isblk && !mountpoint && S_ISBLK(st.st_mode)) {
if (major(st.st_rdev) == EROFS_NBD_MAJOR) {
- nbdnum = erofs_nbd_get_index_from_minor(minor(st.st_rdev));
- err = erofs_nbd_nl_disconnect(nbdnum);
+ dev_id = erofs_nbd_get_index_from_minor(minor(st.st_rdev));
+ err = erofs_nbd_nl_disconnect(dev_id);
if (err != -EOPNOTSUPP)
goto err_out;
- } else if ((nbdnum = ublk_dev_id_from_path(target)) >= 0) {
- err = erofs_ublk_del_dev_by_id(nbdnum);
- goto err_out;
+ } else {
+ dev_id = ublk_dev_id_from_path(target);
+ if (dev_id >= 0) {
+ err = erofs_ublk_del_dev_by_id(dev_id);
+ goto err_out;
+ }
}
}
/* XXX: ublk doesn't have autoclose feature */
- nbdnum = ublk_dev_id_from_path(device);
- if (nbdnum >= 0) {
+ dev_id = ublk_dev_id_from_path(device);
+ if (dev_id >= 0) {
if (mountpoint) {
err = umount(mountpoint);
if (err) {
@@ -2367,7 +2370,7 @@ int erofsmount_umount(char *target)
goto err_out;
}
}
- err = erofs_ublk_del_dev_by_id(nbdnum);
+ err = erofs_ublk_del_dev_by_id(dev_id);
goto err_out;
}
@@ -2398,8 +2401,8 @@ int erofsmount_umount(char *target)
if (err < 0)
err = -errno;
else if (S_ISBLK(st.st_mode) && major(st.st_rdev) == EROFS_NBD_MAJOR) {
- nbdnum = erofs_nbd_get_index_from_minor(minor(st.st_rdev));
- err = erofs_nbd_nl_disconnect(nbdnum);
+ dev_id = erofs_nbd_get_index_from_minor(minor(st.st_rdev));
+ err = erofs_nbd_nl_disconnect(dev_id);
if (err == -EOPNOTSUPP)
err = erofs_nbd_disconnect(fd);
}
@@ -2413,7 +2416,7 @@ err_out:
static int erofsmount_disconnect(const char *target)
{
- int nbdnum, err, fd;
+ int dev_id, err, fd;
struct stat st;
err = lstat(target, &st);
@@ -2423,8 +2426,8 @@ static int erofsmount_disconnect(const char *target)
if (!S_ISBLK(st.st_mode) || major(st.st_rdev) != EROFS_NBD_MAJOR)
return -ENOTBLK;
- nbdnum = erofs_nbd_get_index_from_minor(minor(st.st_rdev));
- err = erofs_nbd_nl_disconnect(nbdnum);
+ dev_id = erofs_nbd_get_index_from_minor(minor(st.st_rdev));
+ err = erofs_nbd_nl_disconnect(dev_id);
if (err == -EOPNOTSUPP) {
fd = open(target, O_RDWR);
if (fd < 0) {
--
2.43.5
prev parent reply other threads:[~2026-06-28 14:39 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-19 4:19 [PATCH 0/2] erofs-utils: support ublk recovery Chengyu
2026-06-19 4:19 ` [PATCH 1/2] ublk: " Chengyu
2026-06-22 7:28 ` Gao Xiang
2026-06-19 4:19 ` [PATCH 2/2] mount: rename erofsmount_nbd_ctx to erofsmount_ctx Chengyu
2026-06-24 13:37 ` [PATCH 0/2] erofs-utils: support ublk recovery Chengyu
2026-06-24 13:37 ` [PATCH 1/2] ublk: " Chengyu
2026-06-24 13:37 ` [PATCH 2/2] mount: rename erofsmount_nbd_ctx to erofsmount_ctx Chengyu
2026-06-28 14:39 ` [PATCH v3 1/2] erofs-utils: mount: support ublk recovery Gao Xiang
2026-06-28 14:39 ` Gao Xiang [this message]
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=20260628143910.1062931-2-hsiangkao@linux.alibaba.com \
--to=hsiangkao@linux.alibaba.com \
--cc=hudsonzhu@tencent.com \
--cc=linux-erofs@lists.ozlabs.org \
/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