[LEDE-DEV] [PATCH mountd 1/2] hfs+ journal partition support as read only
olivier.hardouin at gmail.com
olivier.hardouin at gmail.com
Wed Jun 22 00:51:18 PDT 2016
use hfsplus driver to mount hfs+ partition marked as journalled,
read only mounting since partial support from the kernel for write
access (as stated in Documentatiom/filesystems/hfsplus.txt)
add new index 'LASTFS' to be used in case of support for another
driver
Signed-off-by: Olivier Hardouin <olivier.hardouin at gmail.com>
---
fs.c | 4 ++--
include/fs.h | 25 ++++++++++++++-----------
mount.c | 16 +++++++++++-----
3 files changed, 27 insertions(+), 18 deletions(-)
diff --git a/fs.c b/fs.c
index fee6608..ca77a76 100644
--- a/fs.c
+++ b/fs.c
@@ -153,8 +153,8 @@ static int detect_hfsplus(int fd)
{
if(!journal)
ret = HFSPLUS;
- // else
- // ret = HFSPLUSJOURNAL;
+ else
+ ret = HFSPLUSJOURNAL;
}
out:
free(buffer);
diff --git a/include/fs.h b/include/fs.h
index 1c66db3..b86f383 100644
--- a/include/fs.h
+++ b/include/fs.h
@@ -1,13 +1,16 @@
-#define NONE -1
-#define MBR 2
-#define EXT2 3
-#define EXT3 4
-#define FAT 5
-#define HFSPLUS 6
-#define EFI 7
-#define NTFS 8
-#define EXTENDED 9
-#define EXFAT 10
-#define EXT4 11
+#define NONE -1
+#define MBR 2
+#define EXT2 3
+#define EXT3 4
+#define FAT 5
+#define HFSPLUS 6
+#define EFI 7
+#define NTFS 8
+#define EXTENDED 9
+#define EXFAT 10
+#define EXT4 11
+#define HFSPLUSJOURNAL 12
+
+#define LASTFS HFSPLUSJOURNAL
int detect_fs(char *device);
diff --git a/mount.c b/mount.c
index 219146b..0c2862a 100644
--- a/mount.c
+++ b/mount.c
@@ -60,7 +60,8 @@ char *fs_names[] = {
"ntfs",
"",
"exfat",
- "ext4"
+ "ext4",
+ "hfsplusjournal"
};
#define MAX_MOUNTED 32
@@ -100,7 +101,7 @@ static void mount_dump_uci_state(void)
ucix_add_option(ctx, mountd, q->serial, "rev", q->rev);
snprintf(t, 64, "size%d", atoi(&q->dev[3]));
ucix_add_option(ctx, mountd, q->serial, t, q->size);
- if(q->fs > MBR && q->fs <= EXT4)
+ if(q->fs > MBR && q->fs <= LASTFS)
{
snprintf(t, 64, "fs%d", atoi(&q->dev[3]));
ucix_add_option(ctx, mountd, q->serial, t, fs_names[q->fs]);
@@ -138,7 +139,7 @@ static void mount_add_list(char *name, char *dev, char *serial,
{
struct mount *mount;
char tmp[64], tmp2[64];
- if(fs <= MBR || fs > EXT4)
+ if(fs <= MBR || fs > LASTFS)
return;
mount = malloc(sizeof(struct mount));
INIT_LIST_HEAD(&mount->list);
@@ -154,7 +155,7 @@ static void mount_add_list(char *name, char *dev, char *serial,
mount->mounted = 0;
mount->fs = fs;
list_add(&mount->list, &mounts);
- if((!mount->ignore) && (mount->fs > MBR) && (mount->fs <= EXT4))
+ if((!mount->ignore) && (mount->fs > MBR) && (mount->fs <= LASTFS))
{
log_printf("new mount : %s -> %s (%s)\n", name, dev, fs_names[mount->fs]);
snprintf(tmp, 64, "%s%s", uci_path, name);
@@ -260,12 +261,17 @@ int mount_new(char *path, char *dev)
options = "rw,defaults,uid=1000,gid=1000";
fstype = "hfsplus";
}
+ if(mount->fs == HFSPLUSJOURNAL)
+ {
+ options = "ro,defaults,uid=1000,gid=1000";
+ fstype = "hfsplus";
+ }
if(mount->fs == NTFS)
{
options = "force";
fstype = "ntfs-3g";
}
- if(mount->fs > MBR && mount->fs <= EXT4)
+ if(mount->fs > MBR && mount->fs <= LASTFS)
{
struct uci_context *ctx;
char *uci_options, *uci_fstype;
--
1.9.1
More information about the Lede-dev
mailing list