* hfsplus journal detection @ 2008-11-05 8:00 Warren Turkal 2008-11-05 8:00 ` [PATCH] Identify journal info block in volume header Warren Turkal 0 siblings, 1 reply; 13+ messages in thread From: Warren Turkal @ 2008-11-05 8:00 UTC (permalink / raw) To: linux-fsdevel; +Cc: Roman Zippel, Warren Turkal These small changes change the hfsplus filesystem so that a 0 in the journal info block of the volume header indicates that there is no journal. This change allows the such an HFS+ volume to mount in rw mode without needing the force mount option. Are there any tips you can give me so that I can make sure I am doing the right thing to get this into the Linux kernel? Thanks, wt ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] Identify journal info block in volume header. 2008-11-05 8:00 hfsplus journal detection Warren Turkal @ 2008-11-05 8:00 ` Warren Turkal 2008-11-05 8:00 ` [PATCH] Fix journal detection on HFS+ Warren Turkal 0 siblings, 1 reply; 13+ messages in thread From: Warren Turkal @ 2008-11-05 8:00 UTC (permalink / raw) To: linux-fsdevel; +Cc: Roman Zippel, Warren Turkal Signed-off-by: Warren Turkal <wt@penguintechs.org> --- fs/hfsplus/hfsplus_raw.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/hfsplus/hfsplus_raw.h b/fs/hfsplus/hfsplus_raw.h index fe99fe8..14f1dd8 100644 --- a/fs/hfsplus/hfsplus_raw.h +++ b/fs/hfsplus/hfsplus_raw.h @@ -94,7 +94,7 @@ struct hfsplus_vh { __be16 version; __be32 attributes; __be32 last_mount_vers; - u32 reserved; + __be32 journal_info_block; __be32 create_date; __be32 modify_date; -- 1.5.6.3 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH] Fix journal detection on HFS+. 2008-11-05 8:00 ` [PATCH] Identify journal info block in volume header Warren Turkal @ 2008-11-05 8:00 ` Warren Turkal 2008-11-05 10:40 ` Jörn Engel 0 siblings, 1 reply; 13+ messages in thread From: Warren Turkal @ 2008-11-05 8:00 UTC (permalink / raw) To: linux-fsdevel; +Cc: Roman Zippel, Warren Turkal The code was unconditionally assumming that the volume had a jounal if the jounal attribute was set in the volume header. However, the volume also has to have a non-zero journal info block to actually have a journal. Signed-off-by: Warren Turkal <wt@penguintechs.org> --- fs/hfsplus/super.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index eb74531..b12e767 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c @@ -260,7 +260,8 @@ static int hfsplus_remount(struct super_block *sb, int *flags, char *data) printk(KERN_WARNING "hfs: filesystem is marked locked, leaving read-only.\n"); sb->s_flags |= MS_RDONLY; *flags |= MS_RDONLY; - } else if (vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_JOURNALED)) { + } else if (vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_JOURNALED) && + vhdr->journal_info_block != cpu_to_be32(0)) { printk(KERN_WARNING "hfs: filesystem is marked journaled, leaving read-only.\n"); sb->s_flags |= MS_RDONLY; *flags |= MS_RDONLY; @@ -356,7 +357,9 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent) } else if (vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_SOFTLOCK)) { printk(KERN_WARNING "hfs: Filesystem is marked locked, mounting read-only.\n"); sb->s_flags |= MS_RDONLY; - } else if ((vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_JOURNALED)) && !(sb->s_flags & MS_RDONLY)) { + } else if ((vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_JOURNALED)) && + (be32_to_cpu(vhdr->journal_info_block) != 0) && + !(sb->s_flags & MS_RDONLY)) { printk(KERN_WARNING "hfs: write access to a journaled filesystem is not supported, " "use the force option at your own risk, mounting read-only.\n"); sb->s_flags |= MS_RDONLY; -- 1.5.6.3 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] Fix journal detection on HFS+. 2008-11-05 8:00 ` [PATCH] Fix journal detection on HFS+ Warren Turkal @ 2008-11-05 10:40 ` Jörn Engel 2008-11-05 14:09 ` Christoph Hellwig 0 siblings, 1 reply; 13+ messages in thread From: Jörn Engel @ 2008-11-05 10:40 UTC (permalink / raw) To: Warren Turkal; +Cc: linux-fsdevel, Roman Zippel On Wed, 5 November 2008 00:00:26 -0800, Warren Turkal wrote: > > + vhdr->journal_info_block != cpu_to_be32(0)) { 0 doesn't need explicit cpu_to_be32(). You can drop the whole != cpu_to_be32(0) > + (be32_to_cpu(vhdr->journal_info_block) != 0) && Same here. Jörn -- This above all: to thine own self be true. -- Shakespeare -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Fix journal detection on HFS+. 2008-11-05 10:40 ` Jörn Engel @ 2008-11-05 14:09 ` Christoph Hellwig 2008-11-06 7:44 ` hfsplus journal detection - next try Warren Turkal 0 siblings, 1 reply; 13+ messages in thread From: Christoph Hellwig @ 2008-11-05 14:09 UTC (permalink / raw) To: J??rn Engel; +Cc: Warren Turkal, linux-fsdevel, Roman Zippel On Wed, Nov 05, 2008 at 11:40:54AM +0100, J??rn Engel wrote: > On Wed, 5 November 2008 00:00:26 -0800, Warren Turkal wrote: > > > > + vhdr->journal_info_block != cpu_to_be32(0)) { > > 0 doesn't need explicit cpu_to_be32(). You can drop the whole > != cpu_to_be32(0) > > > + (be32_to_cpu(vhdr->journal_info_block) != 0) && > > Same here. Yeah. In addition adding a little helper that checks both the journal flag and the non-zeroness of journal_info_block would be useful so that everyone adding more checks like this in the future get it right. ^ permalink raw reply [flat|nested] 13+ messages in thread
* hfsplus journal detection - next try 2008-11-05 14:09 ` Christoph Hellwig @ 2008-11-06 7:44 ` Warren Turkal 2008-11-06 7:44 ` [PATCH] Identify journal info block in volume header Warren Turkal 0 siblings, 1 reply; 13+ messages in thread From: Warren Turkal @ 2008-11-06 7:44 UTC (permalink / raw) To: linux-fsdevel; +Cc: Roman Zippel, Warren Turkal Here is my next stab at this issue. I refactored the logic into a function and took out the != 0 like you all suggested. Please let me know if there is anything else I can do to improve it. Also, I am just getting used to git. Is the best workflow to create a branch that I cherrypick seemingly acceptable patches into and just createa a different branch for each patchset attempt? Thanks, wt ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] Identify journal info block in volume header. 2008-11-06 7:44 ` hfsplus journal detection - next try Warren Turkal @ 2008-11-06 7:44 ` Warren Turkal 2008-11-06 7:44 ` [PATCH] Fix journal detection on HFS+ Warren Turkal 0 siblings, 1 reply; 13+ messages in thread From: Warren Turkal @ 2008-11-06 7:44 UTC (permalink / raw) To: linux-fsdevel; +Cc: Roman Zippel, Warren Turkal Signed-off-by: Warren Turkal <wt@penguintechs.org> --- fs/hfsplus/hfsplus_raw.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/hfsplus/hfsplus_raw.h b/fs/hfsplus/hfsplus_raw.h index fe99fe8..14f1dd8 100644 --- a/fs/hfsplus/hfsplus_raw.h +++ b/fs/hfsplus/hfsplus_raw.h @@ -94,7 +94,7 @@ struct hfsplus_vh { __be16 version; __be32 attributes; __be32 last_mount_vers; - u32 reserved; + __be32 journal_info_block; __be32 create_date; __be32 modify_date; -- 1.5.6.3 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH] Fix journal detection on HFS+. 2008-11-06 7:44 ` [PATCH] Identify journal info block in volume header Warren Turkal @ 2008-11-06 7:44 ` Warren Turkal 2008-11-07 8:32 ` Jörn Engel 0 siblings, 1 reply; 13+ messages in thread From: Warren Turkal @ 2008-11-06 7:44 UTC (permalink / raw) To: linux-fsdevel; +Cc: Roman Zippel, Warren Turkal The code was unconditionally assumming that the volume had a jounal if the jounal attribute was set in the volume header. However, the volume also has to have a non-zero journal info block to actually have a journal. Signed-off-by: Warren Turkal <wt@penguintechs.org> --- fs/hfsplus/Makefile | 5 +++-- fs/hfsplus/hfsplus_fs.h | 2 ++ fs/hfsplus/journal.c | 14 ++++++++++++++ fs/hfsplus/super.c | 4 ++-- 4 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 fs/hfsplus/journal.c diff --git a/fs/hfsplus/Makefile b/fs/hfsplus/Makefile index 3cc0df7..a90cdcb 100644 --- a/fs/hfsplus/Makefile +++ b/fs/hfsplus/Makefile @@ -4,6 +4,7 @@ obj-$(CONFIG_HFSPLUS_FS) += hfsplus.o -hfsplus-objs := super.o options.o inode.o ioctl.o extents.o catalog.o dir.o btree.o \ - bnode.o brec.o bfind.o tables.o unicode.o wrapper.o bitmap.o part_tbl.o +hfsplus-objs := super.o options.o inode.o ioctl.o extents.o catalog.o dir.o \ + btree.o bnode.o brec.o bfind.o tables.o unicode.o wrapper.o \ + bitmap.o part_tbl.o journal.o diff --git a/fs/hfsplus/hfsplus_fs.h b/fs/hfsplus/hfsplus_fs.h index f027a90..9018d2d 100644 --- a/fs/hfsplus/hfsplus_fs.h +++ b/fs/hfsplus/hfsplus_fs.h @@ -421,4 +421,6 @@ static inline struct hfsplus_inode_info *HFSPLUS_I(struct inode *inode) #define kdev_t_to_nr(x) (x) +bool hfsp_vol_has_journal(struct hfsplus_vh *vhdr); + #endif diff --git a/fs/hfsplus/journal.c b/fs/hfsplus/journal.c new file mode 100644 index 0000000..7a5ef2a --- /dev/null +++ b/fs/hfsplus/journal.c @@ -0,0 +1,14 @@ +/* + * linux/fs/hfsplus/journal.c + * Copyright (c) 2008 Warren Turkal + * + * Journal related routines + */ + +#include "hfsplus_fs.h" + +bool hfsp_vol_has_journal(struct hfsplus_vh *vhdr) +{ + return (vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_JOURNALED) && + vhdr->journal_info_block); +} diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index eb74531..9293c9a 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c @@ -260,7 +260,7 @@ static int hfsplus_remount(struct super_block *sb, int *flags, char *data) printk(KERN_WARNING "hfs: filesystem is marked locked, leaving read-only.\n"); sb->s_flags |= MS_RDONLY; *flags |= MS_RDONLY; - } else if (vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_JOURNALED)) { + } else if (hfsp_vol_has_journal(vhdr)) { printk(KERN_WARNING "hfs: filesystem is marked journaled, leaving read-only.\n"); sb->s_flags |= MS_RDONLY; *flags |= MS_RDONLY; @@ -356,7 +356,7 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent) } else if (vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_SOFTLOCK)) { printk(KERN_WARNING "hfs: Filesystem is marked locked, mounting read-only.\n"); sb->s_flags |= MS_RDONLY; - } else if ((vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_JOURNALED)) && !(sb->s_flags & MS_RDONLY)) { + } else if (hfsp_vol_has_journal(vhdr) && !(sb->s_flags & MS_RDONLY)) { printk(KERN_WARNING "hfs: write access to a journaled filesystem is not supported, " "use the force option at your own risk, mounting read-only.\n"); sb->s_flags |= MS_RDONLY; -- 1.5.6.3 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] Fix journal detection on HFS+. 2008-11-06 7:44 ` [PATCH] Fix journal detection on HFS+ Warren Turkal @ 2008-11-07 8:32 ` Jörn Engel 2008-11-07 18:01 ` Warren Turkal 0 siblings, 1 reply; 13+ messages in thread From: Jörn Engel @ 2008-11-07 8:32 UTC (permalink / raw) To: Warren Turkal; +Cc: linux-fsdevel, Roman Zippel On Wed, 5 November 2008 23:44:23 -0800, Warren Turkal wrote: > > -hfsplus-objs := super.o options.o inode.o ioctl.o extents.o catalog.o dir.o btree.o \ > - bnode.o brec.o bfind.o tables.o unicode.o wrapper.o bitmap.o part_tbl.o > +hfsplus-objs := super.o options.o inode.o ioctl.o extents.o catalog.o dir.o \ > + btree.o bnode.o brec.o bfind.o tables.o unicode.o wrapper.o \ > + bitmap.o part_tbl.o journal.o Didn't check-read your patch? Remove, please. > diff --git a/fs/hfsplus/hfsplus_fs.h b/fs/hfsplus/hfsplus_fs.h > index f027a90..9018d2d 100644 > --- a/fs/hfsplus/hfsplus_fs.h > +++ b/fs/hfsplus/hfsplus_fs.h > @@ -421,4 +421,6 @@ static inline struct hfsplus_inode_info *HFSPLUS_I(struct inode *inode) > > #define kdev_t_to_nr(x) (x) > > +bool hfsp_vol_has_journal(struct hfsplus_vh *vhdr); > + The function is only ever used in super.c. Just leave it in the same file and make it static. Jörn -- Premature optimization is the root of all evil. -- Donald Knuth -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Fix journal detection on HFS+. 2008-11-07 8:32 ` Jörn Engel @ 2008-11-07 18:01 ` Warren Turkal 2008-11-08 11:09 ` Jörn Engel 0 siblings, 1 reply; 13+ messages in thread From: Warren Turkal @ 2008-11-07 18:01 UTC (permalink / raw) To: Jörn Engel; +Cc: linux-fsdevel, Roman Zippel On Fri, Nov 7, 2008 at 12:32 AM, Jörn Engel <joern@logfs.org> wrote: > On Wed, 5 November 2008 23:44:23 -0800, Warren Turkal wrote: >> >> -hfsplus-objs := super.o options.o inode.o ioctl.o extents.o catalog.o dir.o btree.o \ >> - bnode.o brec.o bfind.o tables.o unicode.o wrapper.o bitmap.o part_tbl.o >> +hfsplus-objs := super.o options.o inode.o ioctl.o extents.o catalog.o dir.o \ >> + btree.o bnode.o brec.o bfind.o tables.o unicode.o wrapper.o \ >> + bitmap.o part_tbl.o journal.o > > Didn't check-read your patch? Remove, please. I am sorry, but I don't understand this comment. What is check-read? Do you want me to remove the journal.o from the hfsplus-objs line? >> diff --git a/fs/hfsplus/hfsplus_fs.h b/fs/hfsplus/hfsplus_fs.h >> index f027a90..9018d2d 100644 >> --- a/fs/hfsplus/hfsplus_fs.h >> +++ b/fs/hfsplus/hfsplus_fs.h >> @@ -421,4 +421,6 @@ static inline struct hfsplus_inode_info *HFSPLUS_I(struct inode *inode) >> >> #define kdev_t_to_nr(x) (x) >> >> +bool hfsp_vol_has_journal(struct hfsplus_vh *vhdr); >> + > > The function is only ever used in super.c. Just leave it in the same > file and make it static. Okay...will do. wt -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Fix journal detection on HFS+. 2008-11-07 18:01 ` Warren Turkal @ 2008-11-08 11:09 ` Jörn Engel 2008-11-09 5:27 ` Warren Turkal 0 siblings, 1 reply; 13+ messages in thread From: Jörn Engel @ 2008-11-08 11:09 UTC (permalink / raw) To: Warren Turkal; +Cc: linux-fsdevel, Roman Zippel On Fri, 7 November 2008 10:01:07 -0800, Warren Turkal wrote: > > I am sorry, but I don't understand this comment. What is check-read? > Do you want me to remove the journal.o from the hfsplus-objs line? Honestly, I didn't even notice you created a new file for that one function. This hunk looked like something completely unrelated - reformatting can hide functional changes. /me whistles innocently Jörn -- Measure. Don't tune for speed until you've measured, and even then don't unless one part of the code overwhelms the rest. -- Rob Pike -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Fix journal detection on HFS+. 2008-11-08 11:09 ` Jörn Engel @ 2008-11-09 5:27 ` Warren Turkal 2008-11-09 11:02 ` Jörn Engel 0 siblings, 1 reply; 13+ messages in thread From: Warren Turkal @ 2008-11-09 5:27 UTC (permalink / raw) To: Jörn Engel; +Cc: linux-fsdevel, Roman Zippel Is everything looking ok at this point? wt On Sat, Nov 8, 2008 at 3:09 AM, Jörn Engel <joern@logfs.org> wrote: > On Fri, 7 November 2008 10:01:07 -0800, Warren Turkal wrote: >> >> I am sorry, but I don't understand this comment. What is check-read? >> Do you want me to remove the journal.o from the hfsplus-objs line? > > Honestly, I didn't even notice you created a new file for that one > function. This hunk looked like something completely unrelated - > reformatting can hide functional changes. > > /me whistles innocently > > Jörn > > -- > Measure. Don't tune for speed until you've measured, and even then > don't unless one part of the code overwhelms the rest. > -- Rob Pike > -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Fix journal detection on HFS+. 2008-11-09 5:27 ` Warren Turkal @ 2008-11-09 11:02 ` Jörn Engel 0 siblings, 0 replies; 13+ messages in thread From: Jörn Engel @ 2008-11-09 11:02 UTC (permalink / raw) To: Warren Turkal; +Cc: linux-fsdevel, Roman Zippel On Sat, 8 November 2008 21:27:30 -0800, Warren Turkal wrote: > > Is everything looking ok at this point? Yes. Jörn -- And spam is a useful source of entropy for /dev/random too! -- Jasmine Strong -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2008-11-09 11:02 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-11-05 8:00 hfsplus journal detection Warren Turkal 2008-11-05 8:00 ` [PATCH] Identify journal info block in volume header Warren Turkal 2008-11-05 8:00 ` [PATCH] Fix journal detection on HFS+ Warren Turkal 2008-11-05 10:40 ` Jörn Engel 2008-11-05 14:09 ` Christoph Hellwig 2008-11-06 7:44 ` hfsplus journal detection - next try Warren Turkal 2008-11-06 7:44 ` [PATCH] Identify journal info block in volume header Warren Turkal 2008-11-06 7:44 ` [PATCH] Fix journal detection on HFS+ Warren Turkal 2008-11-07 8:32 ` Jörn Engel 2008-11-07 18:01 ` Warren Turkal 2008-11-08 11:09 ` Jörn Engel 2008-11-09 5:27 ` Warren Turkal 2008-11-09 11:02 ` Jörn Engel
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).