summaryrefslogtreecommitdiffstats
path: root/fs/ocfs2/ocfs2.h
diff options
context:
space:
mode:
authorMark Fasheh2007-06-18 19:48:04 +0200
committerMark Fasheh2007-07-11 02:32:00 +0200
commit328d5752e1259dfb29b7e65f6c2d145fddbaa750 (patch)
tree08198271a0382cafcc4c0de2fc1efcf35cb400af /fs/ocfs2/ocfs2.h
parentocfs2: abstract btree growing calls (diff)
downloadkernel-qcow2-linux-328d5752e1259dfb29b7e65f6c2d145fddbaa750.tar.gz
kernel-qcow2-linux-328d5752e1259dfb29b7e65f6c2d145fddbaa750.tar.xz
kernel-qcow2-linux-328d5752e1259dfb29b7e65f6c2d145fddbaa750.zip
ocfs2: btree changes for unwritten extents
Writes to a region marked as unwritten might result in a record split or merge. We can support splits by making minor changes to the existing insert code. Merges require left rotations which mostly re-use right rotation support functions. Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2/ocfs2.h')
-rw-r--r--fs/ocfs2/ocfs2.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h
index 648ef8e45eaa..5cc90a40b3c5 100644
--- a/fs/ocfs2/ocfs2.h
+++ b/fs/ocfs2/ocfs2.h
@@ -306,6 +306,19 @@ static inline int ocfs2_sparse_alloc(struct ocfs2_super *osb)
return 0;
}
+static inline int ocfs2_writes_unwritten_extents(struct ocfs2_super *osb)
+{
+ /*
+ * Support for sparse files is a pre-requisite
+ */
+ if (!ocfs2_sparse_alloc(osb))
+ return 0;
+
+ if (osb->s_feature_ro_compat & OCFS2_FEATURE_RO_COMPAT_UNWRITTEN)
+ return 1;
+ return 0;
+}
+
/* set / clear functions because cluster events can make these happen
* in parallel so we want the transitions to be atomic. this also
* means that any future flags osb_flags must be protected by spinlock