summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarcin.slusarz@gmail.com <marcin.slusarz@gmail.com>2008-01-30 22:03:59 +0100
committerJan Kara <jack@suse.cz>2008-04-17 14:22:29 +0200
commitd652eefb70142c64495f4188883f9dfc0430a96b (patch)
treea67a3ebbc01ee7c68c8ca90f616d2a282907fe64
parent1ab9278570077101d1e367399686be62b22c4019 (diff)
downloadlinux-d652eefb70142c64495f4188883f9dfc0430a96b.tar.gz
linux-d652eefb70142c64495f4188883f9dfc0430a96b.tar.bz2
linux-d652eefb70142c64495f4188883f9dfc0430a96b.zip
udf: replace udf_*_offset macros with functions
- translate udf_file_entry_alloc_offset macro into function - translate udf_ext0_offset macro into function - add comment about crypticly named fields in struct udf_inode_info Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
-rw-r--r--fs/udf/udf_i.h4
-rw-r--r--fs/udf/udfdecl.h29
2 files changed, 21 insertions, 12 deletions
diff --git a/fs/udf/udf_i.h b/fs/udf/udf_i.h
index d6d9a774a1c1..4f86b1d98a5d 100644
--- a/fs/udf/udf_i.h
+++ b/fs/udf/udf_i.h
@@ -12,8 +12,8 @@ struct udf_inode_info {
__u32 i_next_alloc_block;
__u32 i_next_alloc_goal;
unsigned i_alloc_type : 3;
- unsigned i_efe : 1;
- unsigned i_use : 1;
+ unsigned i_efe : 1; /* extendedFileEntry */
+ unsigned i_use : 1; /* unallocSpaceEntry */
unsigned i_strat4096 : 1;
unsigned reserved : 26;
union {
diff --git a/fs/udf/udfdecl.h b/fs/udf/udfdecl.h
index 26bc9c237cb7..cc15f58d497a 100644
--- a/fs/udf/udfdecl.h
+++ b/fs/udf/udfdecl.h
@@ -11,6 +11,7 @@
#include "udf_sb.h"
#include "udfend.h"
+#include "udf_i.h"
#define UDF_PREALLOCATE
#define UDF_DEFAULT_PREALLOC_BLOCKS 8
@@ -42,16 +43,24 @@ do { \
#define UDF_NAME_LEN 256
#define UDF_PATH_LEN 1023
-#define udf_file_entry_alloc_offset(inode)\
- (UDF_I(inode)->i_use ?\
- sizeof(struct unallocSpaceEntry) :\
- ((UDF_I(inode)->i_efe ?\
- sizeof(struct extendedFileEntry) :\
- sizeof(struct fileEntry)) + UDF_I(inode)->i_lenEAttr))
-
-#define udf_ext0_offset(inode)\
- (UDF_I(inode)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB ?\
- udf_file_entry_alloc_offset(inode) : 0)
+static inline size_t udf_file_entry_alloc_offset(struct inode *inode)
+{
+ struct udf_inode_info *iinfo = UDF_I(inode);
+ if (iinfo->i_use)
+ return sizeof(struct unallocSpaceEntry);
+ else if (iinfo->i_efe)
+ return sizeof(struct extendedFileEntry) + iinfo->i_lenEAttr;
+ else
+ return sizeof(struct fileEntry) + iinfo->i_lenEAttr;
+}
+
+static inline size_t udf_ext0_offset(struct inode *inode)
+{
+ if (UDF_I(inode)->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB)
+ return udf_file_entry_alloc_offset(inode);
+ else
+ return 0;
+}
#define udf_get_lb_pblock(sb,loc,offset) udf_get_pblock((sb), (loc).logicalBlockNum, (loc).partitionReferenceNum, (offset))